2014-02-14 3 views
0
time_t t = time(0); // get time now 
struct tm * now = localtime(& t); 
char dateNow[100]; 
sprintf(dateNow, "%d%d%d", now->tm_year + 1900, now->tm_mon + 1, now->tm_mday); 
int idateNow = atoi(dateNow); 

Если дата сегодня 2014February14, idateNow == 2014214 (YYYYMDD). Однако требуемый формат - 20140214. Какое минимальное изменение в вышеуказанном коде может быть достигнуто.Как получить дату в формате ГГГГММДД с помощью WinAPI

+1

Читайте о модификаторах формата 'printf'. – devnull

+6

''% 04d% 02d% 02d "' – devnull

ответ

4

printf и друзья могут использовать format modifiers, чтобы запрашивать такие вещи, как начальные нули. В вашем случае строка формата должна быть "%04d%02d%02d". 0 s там говорят, что вам нужны ведущие нули, а другие цифры говорят, сколько цифр вы хотите (минимум).

Поскольку вы отметили это как вопрос WinAPI, я укажу, что существуют также специальные функции для даты форматирования, такие как GetDateFormatEx. (Не путайте имя: оно фактически форматирует дату, а не выбирает формат даты.) GetDateFormatEx немного сложно использовать, поскольку он может многое делать, включая использование предпочтительного формата даты пользователя. Если вам определенно нужен формат yyyymmdd, вы бы переопределили формат даты по умолчанию пользователя, предоставив "picture string", например "yyyyMMdd".

+0

Спасибо, Адриан; ваше терпение, чтобы объяснить модификаторы немного криптовального формата, очень ценится. Добрый день! – Martin

Смежные вопросы