gpt4 book ai didi

c++ - 从 C/C++ 中的日期和时间转换为 UNIX 时间戳的正确方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 20:42:47 26 4
gpt4 key购买 nike

我有很多这种格式的日期:

day.mon.year - hour:min:sec

我需要将这个日期和时间转换成 Unix 时间戳。

我用了tm结构,但我无法填写这些字段:

tm_wday
tm_yday

而且我不必填写那些字段,因为我不知道这个字段对 Unix 时间戳的值有什么影响。

帮我选择正确的方法来计算 Unix 时间戳。

附言带时间的日期不是当前日期,它们可以是 20 世纪的日期或 future 的日期(到 2038 年)。

附言我使用操作系统 Windows。

最佳答案

POSIX 有一个公式可以满足您的需求:

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_15

tm_sec + tm_min*60 + tm_hour*3600 + tm_yday*86400 +
(tm_year-70)*31536000 + ((tm_year-69)/4)*86400 -
((tm_year-1)/100)*86400 + ((tm_year+299)/400)*86400

只要您在 GMT 中有故障时间,即使底层系统的 mktime 等函数不使用与“Unix”相同的格式 time_t时间戳”。

如果您的原始时间是本地时间,您可以使用 mktimegmtime 使用系统的时区规则概念将其转换为 GMT。如果您想应用自己的时区偏移规则,只需在使用上述公式之前手动执行即可。

关于c++ - 从 C/C++ 中的日期和时间转换为 UNIX 时间戳的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17616828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com