_tzset和x字母时区名称

时间:2013-10-07 07:53:26

标签: c timezone

如何在C中设置圣皮埃尔和密克隆(PMST3PMDT)的时区格式:

set TZ=tzn[+ | –]hh[:mm[:ss] ][dzn]

如果您查看_tzset的文档,可以阅读:

  

TZN

     
    

三个字母的时区名称,例如PST。您必须指定从本地时间到UTC的正确偏移量。

  

4个字母(PMDT)或5个字母(EASST)的时区名称怎么样? 以下是所有时区缩写的列表:wikiepedia

这是我在C中测试_tzset的简单代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/timeb.h>
#include <time.h>
//add _CRT_SECURE_NO_WARNINGS in the project properties "preprocessor definitions"

int main(int argc, char* argv[])
{
    time_t t;
    struct tm * now;

    _putenv("TZ=PST8PDT"); // for pacific standard time, there is no problem
     _tzset();

    t = time(0);
    now = localtime( & t );
    printf("time: %d:%d \nisdst:%d\n", now->tm_hour, now->tm_min, now->tm_isdst);
    printf("_daylight=%d\n", _daylight);
    printf( "_timezone=%d\n", _timezone);
    printf( "_tzname[0]=%s\n", _tzname[0]);
    printf( "_tzname[1]=%s\n", _tzname[1]);

    return 0;
}

*我正在使用windows8,visual studio 2012

1 个答案:

答案 0 :(得分:0)

从我在Ubuntu的时区数据库中看到的内容:

/usr/share/zoneinfo/zone.tab

您要使用的时区名为America/Miquelon

所以你想要这样做:

setenv("TZ", "America/Miquelon", 1);
tzset();

迫使时区到圣皮埃尔&amp;密克隆

我不知道这是否可以在MS-Windows下运行......