我正在尝试使用strptime将字符串解析为struct tm。看起来很容易,但它没有正确填写年份(是的,我知道1900年的偏移) - 通话后,年份设置为0.其他字段看起来不错。见下文:
struct tm tm;
memset(&tm, 0, sizeof(struct tm));
strptime("Fri Jan 17 09:44:33 UTC 2014", "%a %b %d %H:%M:%S %Z %Y", &tm);
在strptime调用之后,tm结构如下 - 注意tm_year = 0,我希望它是114:
{tm_sec = 33, tm_min = 44, tm_hour = 9, tm_mday = 17, tm_mon = 0, tm_year = 0,
tm_wday = 5, tm_yday = 0, tm_isdst = 0, tm_gmtoff = 0, tm_zone = 0x0}
我确定我错过了一些简单的事情 - 有人能指出我吗?
答案 0 :(得分:2)
在我的系统(Mac OS X)上,man strptime
有关于%Z的注释:
%Z格式说明符只接受时区的缩写 当地时区或价值 “格林威治标准时间”。这种限制是由于时区缩写的过度加载导致的模糊性。 其中一个例子是东部标准时间和澳大利亚东部夏令时的EST。
事实上,如果我将“UTC”更改为“GMT”,代码会突然发挥作用。请注意,无论出于何种原因,Python在这里都更加智能,并且还支持“UTC”。