c - 将UTC时间戳转换为C中的纪元时间
问题描述
考虑到 C 语言中的 DST,我想以纪元时间秒为单位转换 UTC 时间戳。我正在 VS 2005 上进行开发,因为这是旧产品。我浏览了各种网站,但它没有用。
我们可以通过 boost 库来做到这一点,但不建议这样做。
我将输入作为“2017-03-12T01:00:00Z”传递,即UTC时间戳,我想要它的纪元时间,即以秒为单位。当我将此纪元时间转换回 UTC 时间时,它应该给我准确的结果作为输入时间戳。
解决方案
你可以利用mktime()
.
根据手册页,您必须解析输入并填写结构tm
,定义为
struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};
然后,调用mktime()
as
time_t result;
result = mktime(&t);
注意事项:请阅读链接手册并检查结构成员的适用值,尤其是
tm_mon
自一月以来的月数,范围为 0 到 11。
和
tm_year
自 1900 年以来的年数。
推荐阅读
- kuka-krl - 库卡机器人。计算 TCP 周围的相对位置
- python - DataFrame中的Groupby与类对象
- javascript - Vue js 分块发送数据
- javascript - 使用 Cookie 填充 Javascript 网络表单
- python - 自动打开每个搜索结果(元素数据-ihref)
- mysql - 如何选择并加入具有行名的多个表
- c# - Autowired ViewModel (Prism) 的 Rider 代码完成
- python - 带有变量的 QTimer singleShot 并且可以停止
- c - 如何将嵌套结构或多维数组从 Go 传递到 C
- c# - 在 C# 中更改 System.Exception() 的错误消息