【发布时间】:2017-01-07 08:27:22
【问题描述】:
我在 SO 上查看了 this 和 this,但它们处理的是同一问题的非 C 变体。
使用 GNU GCC 编译器(Windows 中的 Code::Blocks)和以下代码:
int main(void)
{
time_t rawtime;
struct tm *info;
char timeStr[80];
time( &rawtime );
info = localtime( &rawtime );
strftime(timeStr,80,"%a %b %d %H:%M:%S %Z %Y", info);
printf("%s", timeStr);
getchar();
return 0;
}
我得到了这个时间字符串:
2016 年 8 月 30 日星期二 14:55:08 太平洋夏令时间
除了时区,一切都很好。我更喜欢缩写,比如:
2016 年 8 月 30 日星期二 14:55:08 PDT
在每个手册页或 strftime() 的 Windows 文档中,我可以找到格式说明符 %Z 的描述,类似于:时区名称 或缩写。 (eg. here.)
将时区格式化为缩写的技巧是什么?
【问题讨论】:
-
“格林威治标准时间”是的缩写,即“GMT”,但我们从未见过“GMTDT”。
-
您是否查看过微软对其
strftime()的评价?您的编译器是否配置为使用 Microsoft C 运行时库或其他一些 C 运行时库进行构建? -
@WeatherVane - 大声笑,说得好。我看到时间戳来自我正在使用的设备,该设备使用的是类似 Linux 的操作系统,它有一个缩写的时区。也许它是特定于实现的?
-
@WeatherVane 事实上,在英国的夏季,Windows 机器会显示字符串“GMT Daylight Time”(这也是
%Z的值将扩展为)。跨度>