wxWidgets предоставляет набор мощных классов для работы с датой и временем.
Некоторые из поддерживаемых функций класса wxDateTime :
В wxWidgets есть несколько классов для работы с датой и временем.
Для того чтобы работать с классом wxDateTime нужно подключить:
#include <wx/datetime.h>
Функция wxDateTime::Now() возвращает объект, соответствующий текущему времени в местном часовом поясе.
Метод Format() сохраняет в виде строки все эти данные или их часть, выделенную спецификатором формата. Format() работает так же, как стандартная strftime функция ANSI C (http://www.cplusplus.com/reference/clibrary/ctime/strftime.html). спецификаторы формата.
Хотя существует только один логический способ представления абсолютного момента времени (и, следовательно, только один класс wxDateTime ), существует как минимум два метода для описания временного интервала.
Во-первых, есть прямой и самоочевидный способ, реализованный wxTimeSpan : это просто разница в миллисекундах между двумя моментами времени. Добавление или вычитание такого интервала к wxDateTime всегда четко определено и является быстрой операцией.
Но в повседневной жизни используются другие, зависящие от календаря, временные интервалы. Например, обычно используется «месяц спустя». Однако ясно, что это не то же самое, что wxTimeSpan 60 * 60 * 24 * 31 секунда, потому что «один месяц спустя» 15 февраля - это 15 марта, а не 17 или 16 марта (в зависимости от того, является ли год високосным или нет. ).
Вот почему существует другой класс для представления таких интервалов, называемый wxDateSpan . Он обрабатывает такие операции наиболее естественным образом, но обратите внимание, что манипуляции с такими интервалами не всегда четко определены. Рассмотрим, например, 31 января + «1 месяц»: это даст 28 (или 29) февраля, то есть последний день февраля, а не несуществующий 31 февраля. Конечно, это то, что обычно требуется, но вы все еще может быть удивлен, заметив, что теперь вычитание того же самого интервала из 28 февраля приведет к 28 января, а не 31 января, с которого мы начали!
Итак, если вы не планируете реализовывать в программе какой-либо анализ естественного языка, вам, вероятно, следует использовать wxTimeSpan вместо wxDateSpan (что также более эффективно). Однако wxDateSpan может быть очень полезен в ситуациях, когда вам действительно нужно понять, что означает «через месяц» (конечно, это просто wxDateTime::Now()+ wxDateSpan :: Month () ).