2014-01-14 9 views
2

У меня есть переменная, которая использует тип данных time_t. Я хочу преобразовать этот тип в «ГГГГ-ММ-ДД ЧЧ: ММ: СС». Я просто знаю, что это работает только в localtime() Например:C - Как преобразовать time_t в tm?

char buff[20]; 
time_t now = time(NULL); 
strftime(buff, 20, "%Y-%m-%d %H:%M:%S", localtime(&now)); 

любое предложение, как преобразовать его? потому что у меня есть время, которое всегда увеличивалось каждую минуту, а не фиксированное, как localtime(). Мне нужно это преобразование для сопоставления с типом datetime в базе данных MySQL.

ответ

4

Функции gmtime и localtime (для UTC и местным временем, соответственно) превратит произвольноеtime_t в struct tm с отдельными полями для года, месяца и так далее.

Вы можете просто использовать strftime, как у вас есть, или sprintf создавать строки из них, например, с:

char buff[11]; 
sprintf (buff, "%04d-%02d-%02d", 
    mytm.tm_year + 1900, 
    mytm.tm_mon + 1, 
    mytm.tm_mday); 
+0

что две функции возвращают текущее время в 'tm' формате. В этом случае я определил свой собственный 'time_t' для преобразования в' tm'. – Angga

+0

@Angga, эти две функции не имеют никакого отношения к текущему времени. Они будут работать с произвольным значением 'time_t', текущим временем от' time (0) 'или любым другим моментом времени, таким как' (time_t) 42'. – paxdiablo

+0

Я пробовал, но localtime() нужен const time_t *, а моя переменная использует тип данных time_t. Я попытался использовать его, или используя localtime (& myvar), он сделал мою ошибку программы. любое решение? – Angga

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