【问题标题】:Compare sytem time with variables - C++将系统时间与变量进行比较 - C++
【发布时间】:2019-10-15 04:53:46
【问题描述】:

我无法比较两个日期。

首先我将变量设置为比较:

string StartTime = "0800", EndTime = "2000";

现在我将Windows系统的小时和分钟存储在“SystemTime”中:

auto t = std::time(nullptr);
auto SystemTime = std::put_time(localtime(&t), "%H%M"); //Output example: 0700

最后,我试着比较一下时间:

 if (SystemTime < StartTime || SystemTime > EndTime)
  cout << SystemTime << endl;

我对 C++ 没有太多经验。但是为什么我不能比较这两个字符串呢?我该如何解决?

感谢关注!

【问题讨论】:

标签: c++ string date


【解决方案1】:

StartTimeEndTime 的类型是字符串,而 std::put_time 返回的值的类型不是字符串,因此您不能直接比较这两者,除非您有一些比较运算符重载来做到这一点。

理想情况下,您应该将 StartTime 和 EndTime 转换为 std::time 类型,然后与从本地时间获取的 SystemTime 进行比较。

这里要将系统时间转换成字符串,所以需要将put_time的结果放入字符串中:

...
string SystemTime;
stringstream sysTime(systemTime);

sysTime << std::put_time(localtime(&t), "%H%M"); //Output example: 0700
...

再次注意,比较 std::time 对象比将时间转换为字符串然后比较字符串要好,因为这很容易出错,例如您需要注意语言环境等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多