加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将日期时间转换为毫秒 – C – 跨平台

发布时间:2020-12-16 10:13:20 所属栏目:百科 来源:网络整理
导读:我想将格式为“20160907-05:00:54.123”的字符串转换为毫秒. 我知道strptime在 Windows中不可用,我想在Windows和 Linux中运行我的程序.我也不能使用第三方库. 我可以将字符串标记化并转换它.但是有更优雅的方式就像使用strptime这样做吗? 解决方法 给定字
我想将格式为“20160907-05:00:54.123”的字符串转换为毫秒.
我知道strptime在 Windows中不可用,我想在Windows和 Linux中运行我的程序.我也不能使用第三方库.
我可以将字符串标记化并转换它.但是有更优雅的方式就像使用strptime这样做吗?

解决方法

给定字符串的格式,可以很容易地按如下方式解析它(尽管正则表达式或get_time可能更优雅):

tm t;
t.tm_year = stoi(s.substr(0,4));
t.tm_mon = stoi(s.substr(4,2));
t.tm_mday = stoi(s.substr(6,2));
t.tm_hour = stoi(s.substr(9,2));
t.tm_min = stoi(s.substr(12,2));
t.tm_sec = 0;
double sec = stod(s.substr(15));

找到自纪元以来的时间可以用mktime完成:

mktime(&t) + sec * 1000

请注意,小数秒需要以不同的方式处理 – 不幸的是,tm has only integer seconds.

(参见完整代码here.)

编辑

正如Mine和Panagiotis Kanavos在评论中正确注意到的那样,Visual C显然支持get_time很长一段时间,并且它的使用时间要短得多(注意,小数秒需要以相同的方式处理).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读