我使用自1970年以来的秒(和微秒)以及时区和dst标志来表示日期。我想使用strftime打印日期的表示,但它使用从环境中获取的时区(extern long int timezone)的全局值。如何让strftime打印我选择的区域?
答案 0 :(得分:6)
以下程序使用您所需的时区设置UNIX环境变量TZ,然后使用strftime打印格式化的时间。
在下面的示例中,时区设置为美国太平洋时区。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main (int argc, char *argv[])
{
struct tm *mt;
time_t mtt;
char ftime[10];
setenv("TZ", "PST8PDT", 1);
tzset();
mtt = time(NULL);
mt = localtime(&mtt);
strftime(ftime,sizeof(ftime),"%Z %H%M",mt);
printf("%s\n", ftime);
}
答案 1 :(得分:1)
通过设置timezone
全局变量更改时区,并使用localtime
获取您通过strftime
打印的时间。