2013-05-20 3 views
1

В Интернете есть множество кода, которые привели меня к мысли, что следующее даст мне текущее время. Однако это не так. Я получаю то, что считаю временем эпохи UNIX; 1 января 1970 года 00: 00; 00.localtime(), давая неправильное значение

Это становится действительно раздражающим сейчас, почему я не получаю текущее время в соответствии с моими системными часами компьютеров? Я делаю это для встроенной системы, в C. IDE - mplab.

#include <stdio.h> 
#include <time.h> 

int main() { 

time_t time_raw_format; 
struct tm * ptr_time; 

time (&time_raw_format); 
ptr_time = localtime (&time_raw_format); 
printf ("Current local time and date: %s", asctime(ptr_time)); 

return 0; 
} 
+0

что вы получаете и чего вы ожидаете? Ваш код отлично работает для меня. – hexist

+0

Возможно, вы захотите проверить, что возвращает 'time', чтобы убедиться, что оно выполнено успешно. И, конечно, проверьте свои часы. –

+0

Я ожидаю текущего времени; 16:51, 20 мая 2013 года. Я получаю, как я говорю, 00:00 1 января 1970 года. – ritchie888

ответ

1

стандарт C не требует времени, чтобы быть в наличии, и time процедура может вернуть -1 (и поместите его в указываемом месте). Ваш код не проверяет возвращаемое значение, поэтому нет причин полагать, что какой-либо из кода после этого выполняет какие-либо полезные операции. Поэтому первое, что нужно сделать, это проверить возвращаемое значение time.

Аналогичным образом, localtime может возвращать нулевой указатель, если преобразование в местное время невозможно, и ваш код не проверяет возвращаемое значение localtime.

+0

Спасибо за ваш ответ, но с помощью некоторых других участников мы локализовали его в проблеме MPLAB. Очевидно, что встроенные библиотеки C не могут связаться с компьютером/системой. Код отлично работает в Visual Studio. – ritchie888

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