标签: c++ c time dayofweek chrono
标准C / C ++库中是否存在填充struct tm?
struct tm
更具体地说明我的问题:我希望能够提供一个日期并从中填充struct tm(例如:1-1-2000 00:00:01。)对于大多数字段我可以直接插入数据,但我不知道tm_wday和tm_isdst。
tm_wday
tm_isdst
我真的在寻找一种方法来填充这两个而不用编写一些复杂的一周状态机。
答案 0 :(得分:5)
mktime听起来是你最好的选择。传递给它的struct tm不需要具有指定范围内的值;它会对字段进行规范化,包括重新计算tm_wday和tm_yday。要让其尝试确定DST是否生效,请在致电tm_isdst之前将mktime成员设为否定。
mktime
tm_yday
如果您要从字符串转换,可以使用get_time操纵器将信息提取到tm。
get_time
tm
答案 1 :(得分:3)
您想要mktime:
。tm_wday和tm_yday组件的原始值 结构被忽略,以及其他组件的原始值 不限于上述范围。
那是mktime可以用作某种规范化函数,确保所有字段都是一致的。