首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >localtime()报告不正确的小时和isdst标志

localtime()报告不正确的小时和isdst标志
EN

Stack Overflow用户
提问于 2020-11-05 15:15:59
回答 2查看 141关注 0票数 1

更新代码11/06/20

本地时间报告了不正确的tm_hour (+1小时)和tm_isdst (1)。

备注:

  1. I在东部时区。
  2. 目前是11月6日(未设置
  3. 变量TZ )。控制面板(日期和时间)设置为"(UTC-05:00)东部时间(美国和加拿大)“。

关于这个问题有许多这样的帖子,但没有一个直接涉及这个问题。

这是个bug还是我做错了什么?

我的代码如下(用MSVC编译的"Win32调试“,在Win10 10-64上运行):

代码语言:javascript
复制
//  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运行)

代码语言:javascript
复制
Program localtime.exe:
Env Var TZ: (null)
tm->tm_hour:  11
tm->tm_isdst: 1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-09 15:38:55

非常非常奇怪。如果发现是否设置了env var "TZ",则localtime()可以正常工作。Strange是什么,它与我设置的没有关系。"XXX“。

票数 0
EN

Stack Overflow用户

发布于 2020-11-05 15:24:01

我的猜测是,您在时间函数中使用未初始化的值,而不捕获它的返回值。

试试这个:

代码语言:javascript
复制
   time_t ltime;
   struct tm *tm;
   ltime = time( NULL );
   tm = localtime( &ltime );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64700077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档