linux把日期date转换为毫秒时间戳(struct tm)mktime()
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux把日期date转换为毫秒时间戳(struct tm)mktime()相关的知识,希望对你有一定的参考价值。
需要引用的头文件请用man文档查询
//arnold add 20220427 修改target时间戳为正确时间戳 start
//memset(frm_get->timeStamp, 0, sizeof(unsigned long long));
unsigned long long test_timestamp_ms = 0;
struct tm stm = 0;
stm.tm_year=frm_get.dateTime.year-1900; //自行获取前面的年月日时分秒还有毫秒
stm.tm_mon=frm_get.dateTime.month-1;
stm.tm_mday=frm_get.dateTime.day;
stm.tm_hour=frm_get.dateTime.hour - 8; //还不太了解怎么设置时区,我们是东八区,所以暴力减8小时
stm.tm_min=frm_get.dateTime.minute;
stm.tm_sec=frm_get.dateTime.second;
test_timestamp_ms = (unsigned long long)mktime(&stm)*1000 + frm_get.dateTime.milliSecond;
printf("print date: [%d%02d%02d-%02d:%02d:%02d] [%03d]\\n", frm_get.dateTime.year, frm_get.dateTime.month, frm_get.dateTime.day, frm_get.dateTime.hour, frm_get.dateTime.minute, frm_get.dateTime.second, frm_get.dateTime.milliSecond); //补零操作
printf("date to timestamp is [%llu]\\n", test_timestamp_ms); //unsigned long long用%llu打印
//arnold add 20220427 修改target时间戳为正确时间戳 end
输出结果:
参考文章1:C标准时间与时间戳的相互转换
关于进阶时区设置,参考:时间日期与时间戳转换(Linux C)(没看。。。)
参考文章3:KYSL 修改hikflow_demo中target的时间戳为正确时间(有接口调用代码)
以上是关于linux把日期date转换为毫秒时间戳(struct tm)mktime()的主要内容,如果未能解决你的问题,请参考以下文章