Сравните время системы с переменными - C ++ - PullRequest
0 голосов
/ 15 октября 2019

У меня проблемы со сравнением двух дат.

Сначала я установил для переменных переменные:

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 ++. Но почему я не могу сравнить эти две строки? Как я могу решить это?

Спасибо за внимание!

1 Ответ

0 голосов
/ 15 октября 2019

Тип StartTime и EndTime является строкой, в то время как тип значения, возвращаемого std :: put_time, не является строкой, поэтому вы не можете напрямую сравнивать эти два, если у вас нет некоторыхДля этого перегружается оператор сравнения.

В идеале вы должны преобразовать StartTime и EndTime в тип std :: time, а затем сравнить с SystemTime, полученным из localtime.

Здесь вы хотите преобразовать системное времяв строку, поэтому вам нужно поместить результаты put_time в строку:

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

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

Снова обратите внимание, что сравнение объектов std :: time лучше, чем преобразование времени в строку и последующее сравнение строки, так как это подвержено ошибкамнапример, вам нужно позаботиться о местах и ​​т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...