HarmonyOS 鸿蒙Next 判断时间字符串是否是今年

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 判断时间字符串是否是今年

判断时间字符串是否是今年

2 回复
深色代码主题
复制
参考demo
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  build() {
    RelativeContainer() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(()=>{
          let date = new Date( '2023-09-07 13:33:30')
          let nowDate = new Date()
          let year = date.getFullYear()
          let nowYear = nowDate.getFullYear()
          if (year.valueOf() == nowYear) {
            console.log('是今年')
          } else {
            console.log('不是今年')
          }
        })
    }
    .height('100%')
    .width('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next 判断时间字符串是否是今年的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,你可以使用内置的日期时间API来判断一个时间字符串是否是今年的。以下是一个示例代码片段,展示了如何进行这个判断:

#include <string>
#include <ctime>
#include <iomanip>
#include <sstream>
#include <locale>

bool isThisYear(const std::string& timeStr, const std::string& dateFormat = "%Y-%m-%d") {
    std::tm tm = {};
    std::istringstream ss(timeStr);
    ss.imbue(std::locale(""));
    ss >> std::get_time(&tm, dateFormat.c_str());

    std::time_t currentTime = std::time(nullptr);
    std::tm* currentTm = std::localtime(&currentTime);

    return tm.tm_year == currentTm->tm_year;
}

int main() {
    std::string dateStr = "2023-10-05";
    bool result = isThisYear(dateStr);
    // result will be true if dateStr is within the current year
}

注意:

  • dateFormat 参数用于指定时间字符串的格式,默认格式为 “%Y-%m-%d”。
  • std::locale("") 用于支持本地化时间格式解析。
  • std::get_time 用于将时间字符串解析为 std::tm 结构。
  • 通过比较 tm_year 字段来判断时间字符串是否是今年的。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部