我如何获得时区首字母?

时间:2012-08-14 18:19:32

标签: c datetime timezone

我正在尝试为电子邮件创建Date标头。

格式如下:

DayOfWeek, Day ShortMonth Year Hours:Minutes:Seconds Offset (TimeZone)

所以一个例子是:

Fri, 19 Mar 2010 11:44:09 -0700 (PDT)

我正在尝试获取的TimeZone部分(示例中为PDT)。我意识到不同系统会有所不同,但我想为所有这些系统提供解决方案。

谢谢!

1 个答案:

答案 0 :(得分:3)

您正在寻找%Z中的strftime()

例如:

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

int main()
{
    char buf[16];
    time_t t = time(0);

    strftime(buf, sizeof(buf), "%Z", localtime(&t));
    printf("%s\n", buf);

    return 0;
}

它是C89,AFAIR(这意味着它非常便携)。

C99标准的片段:

  

%Z由区域设置的时区名称或缩写替换,如果没有时区可确定,则替换为无字符。 [tm_isdst]

可悲的是,正如我们注意到并非每个系统都为它提供了合理的价值......