ryy*_*ker 4 c windows strftime
我已经在 SO 上查看了this和this,但它们处理的是同一问题的非 C 变体。
使用带有以下代码的 GNU GCC 编译器(Code::Blocks,在 Windows 中):
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;
}
Run Code Online (Sandbox Code Playgroud)
我得到这个时间字符串:
2016 年 8 月 30 日星期二 14:55:08 太平洋夏令时
除了时区,一切都很好。我更喜欢缩写,例如:
2016 年 8 月 30 日星期二 14:55:08 PDT
在strftime() 的每个手册页或 Windows 文档中,我都可以找到格式说明符 %Z 的描述,例如: Timezone name or abbreviation。(例如。这里。)
将时区格式化为缩写的技巧是什么?
strftime不保证您会得到全名还是缩写。它依赖于实现。C99 规范(和微软的文档)说:
%Z 替换为区域设置的时区名称或缩写,如果无法确定时区,则替换为无字符。
AFAIK 没有标准的 C 方法来保证你会得到时区缩写。假设您使用系统时区数据库。您可以随附您自己的时区数据库副本。
一般来说,时区缩写是一个坏主意,因为它们不明确。浏览列表,我们发现 ACT、AMT、BST、ECT、GST、IST、LHST、MST、PST 和 SST 都是模棱两可的。您最好使用全名、数字偏移量(即%z),或者完全避开时区并使用 UTC(特别适用于日志记录)。
| 归档时间: |
|
| 查看次数: |
1899 次 |
| 最近记录: |