更新代码11/06/20
本地时间报告了不正确的tm_hour (+1小时)和tm_isdst (1)。
备注:
关于这个问题有许多这样的帖子,但没有一个直接涉及这个问题。
这是个bug还是我做错了什么?
我的代码如下(用MSVC编译的"Win32调试“,在Win10 10-64上运行):
// localtime.c - Test Program for localtime()
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
int
main(int argc,char **argv)
{
time_t utc;
struct tm *tm;
utc = time( NULL );
tm = localtime( &utc );
printf( "Program localtime.exe:\n" );
printf( "Env Var TZ: %s\n", getenv( "TZ" ) );
printf( "tm->tm_hour: %d\n", tm->tm_hour );
printf( "tm->tm_isdst: %d\n", tm->tm_isdst );
printf( "Press any key to exit...\n" );
getch();
exit( 0 );
return( 0 );
} 程序输出(在东部时间上午10:20运行)
Program localtime.exe:
Env Var TZ: (null)
tm->tm_hour: 11
tm->tm_isdst: 1发布于 2020-11-09 15:38:55
非常非常奇怪。如果发现是否设置了env var "TZ",则localtime()可以正常工作。Strange是什么,它与我设置的没有关系。"XXX“。
发布于 2020-11-05 15:24:01
我的猜测是,您在时间函数中使用未初始化的值,而不捕获它的返回值。
试试这个:
time_t ltime;
struct tm *tm;
ltime = time( NULL );
tm = localtime( <ime );https://stackoverflow.com/questions/64700077
复制相似问题