C++ 如何将年-月-日格式的日期转换为 unix 纪元格式?

标签 c++ time

我需要将给定日期转换为包含自 1970 年 1 月 1 日以来的毫秒数的 int。(unix 纪元)

我尝试了以下代码:

tm lDate;

lDate.tm_sec = 0;  
lDate.tm_min = 0;  
lDate.tm_hour = 0;  
lDate.tm_mday = 1;  
lDate.tm_mon = 10;  
lDate.tm_year = 2010 - 1900;  

time_t lTimeEpoch = mktime(&lDate);

cout << "Epoch: " << lTimeEpoch << endl;

结果是 Epoch: 1288584000,对应于 Mon, 01 Nov 2010 04:00:00 GMT

编辑:我期待 2010 年 10 月 1 日,显然 tm_mon 是自一月以来的月数, 所以正确的行应该是 lDate.tm_mon = 10 -1;

最佳答案

如手册页中所述,tm_mon 是: 自一月以来的月数,范围为 0 到 11。

关于C++ 如何将年-月-日格式的日期转换为 unix 纪元格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4000710/

相关文章:

c++ - 如何在 C++ 中实现更好的重新插入到集合中的效率

c++ - 如何在完整的专用模板类定义之外定义模板成员函数?

PHP获取本地日期和时间

c++ - 如何多次锁定互斥锁?

c++ - 带参数的 HTTP GET 请求

java - java中如何设置Date对象指向不同的时区

Java 8 DateTimeFormatter 可选部分不带秒

java - 日期到时间字符串转换错误一小时

c - 递归遍历目录时 C 中的 gmtime 不一致

java - 天花板和地板之间奇怪的平等