Как сравнить две метки времени в формате «Месяц Дата hh: mm: ss», чтобы проверить + ve или -ve значение

Я проверил сайт stackoverflow для моего ответа, я не получил, поэтому я размещаю его здесь.

Моя проблема:

Как сравнить два штампа времени в формате "Month Date hh:mm:ss" ?

Я пишу программу на C и C ++, и время находится в отображаемом строчном формате.

Пример :

 time1 = "Mar 21 11:51:20" time2 = "Mar 21 10:20:05" 

Я хочу сравнить time1 и tme2 и выяснить, является ли time1 после time1 или нет, и мне нужен вывод как true или false , как time1 ниже:

  if time2 > time1 then i need output as 1 or 0 or -1 anything 

Я использовал difftime(time2,time1) , но он возвращает time1 времени дельта между time1 и time1 .
Я хочу проверить больше или нет.

За любую помощь, спасибо заранее

FIRST – используйте difftime для сравнения:

вы можете просто использовать difftime() для сравнения времени и возврата 1 или -1 следующим образом:

 int comparetime(time_t time1,time_t time2){ return difftime(time1,time2) > 0.0 ? 1 : -1; } 

SECOND- Преобразование строки во времени:

Если вам сложно преобразовать string в структуру time_t , вы можете использовать две функции последовательно:

  1. char *strptime(const char *buf, const char *format, struct tm *tm); функция. преобразовать строку в struct tm

    Пример: для преобразования строки даты-времени "Mar 21 11:51:20 AM" в struct tm вам нужны три строки "Mar 21 11:51:20 AM" :

    % b : имя месяца, может быть либо полное имя, либо аббревиатура
    % d : День месяца [1-31].
    % r : Время в формате AM / PM для локали. Если это не доступно в формате времени локали, по умолчанию используется формат времени AM / PM POSIX: %I:%M:%S %p .

  2. time_t mktime (struct tm * timeptr); функция для преобразования struct tm* в time_t

Ниже приведен пример моего примера:

 #include  #include  int main(void){ time_t t1, t2; struct tm *timeptr,tm1, tm2; char* time1 = "Mar 21 11:51:20 AM"; char* time2 = "Mar 21 10:20:05 AM"; //(1) convert `String to tm`: if(strptime(time1, "%b %d %r",&tm1) == NULL) printf("\nstrptime failed\n"); if(strptime(time2, "%b %d %r",&tm2) == NULL) printf("\nstrptime failed\n"); //(2) convert `tm to time_t`: t1 = mktime(&tm1); t2 = mktime(&tm2); printf("\n t1 > t2 : %d", comparetime(t1, t2)); printf("\n t2 > t1 : %d", comparetime(t2, t1)); printf("\n"); return 1; } 

И он работает по вашему желанию:

  $ ./a.out t1 > t2 : 1 t2 > t1 : -1 

Чтобы рассчитать разницу между двумя датами, прочитайте: Как вы находите разницу между двумя датами в часах, в C?

Посмотрите на strptime()

Он преобразует ASCII-строку в формате date / time в struct tm

Вот очень простое решение для решения вашей проблемы. Если в вашем случае сравнение зависит от времени. Если это так, вы можете превратить свои переменные времени в строку, чтобы вы могли сравнить их как строку. ТОЛЬКО, если базой сравнения являются часы, минуты и секунды и / или день. Это будет выглядеть так:

 string time1 = "Mar 21 11:51:20"; string time2 = "Mar 21 10:20:05"; cout<time2)cout< 
  • Инструмент для сравнения 2 двоичных файлов в Windows
  • Что «отсутствует» в выпусках Visual Studio 2008 Express?
  • В Perl существует встроенный способ сравнения двух массивов для равенства?
  • Как Python 2 сравнивает строку и int? Почему списки сравниваются больше, чем числа, а кортежи - больше, чем списки?
  • Сравните два файла CSV и выполните поиск похожих элементов
  • Определите, сохраняет ли два файла один и тот же контент
  • Как проверить несколько переменных на значение?
  • Сортировка объектов Java с использованием нескольких ключей
  • Извлеките разницу между двумя строками в Java
  • Существуют ли библиотеки функций нечеткого поиска или строковых функций сходства для C #?
  • Сравнение равенств между несколькими переменными
  • Давайте будем гением компьютера.