strptime()的问题 - %p未被考虑在内

时间:2010-08-06 06:06:32

标签: c++ parsing datetime strptime

我正在尝试使用strptime转换特定格式的日期,我意识到有关AM / PM的信息丢失了。不知道为什么。

这是代码。

struct tm t;
strptime("Wed 4/18/2007 4:28:22 PM", "%a %m/%d/%Y %H:%M:%S %p", &t);
std::cout<<t.tm_hour<<endl;
strptime("Wed 4/18/2007 4:28:22 AM", "%a %m/%d/%Y %H:%M:%S %p", &t);
std::cout<<t.tm_hour<<endl;

有人能告诉我在%p中使用strptime说明符的目的是什么?

提前致谢, AJ

2 个答案:

答案 0 :(得分:5)

此处的问题是%H,它将以 24小时格式读取小时并忽略上午/下午。如果您想以 12小时格式阅读小时数并使用上午/下午使用%I代替%H

您可以参考手册here

答案 1 :(得分:0)

来自this site

  

%p =语言环境相当于a.m或p.m。