前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一练(124)

基础知识 | 每日一练(124)

作者头像
小林C语言
发布2019-09-23 13:22:13
2950
发布2019-09-23 13:22:13
举报
基础知识练习

读者:怎样在日期上加 N 天?怎样取得两个日期的时间间隔?

小林:ANSI/ISO 标准 C 函数 mktime() 和 difftime() 对这两个问题提供了一些有限的支持。

mktime() 接受没有规格化的日期, 所以可以用一个日期的 struct tm 结构, 直接在 tm mday 域进行加或减, 然后调用 mktime() 对年、月、日域进行规格化, 同时也转换成了 time t 值。

可以用 mktime() 来计算两个日期的 time t 值, 然后用 difftime() 计算两个 time t 值的秒数差分。

但是, 这些方法只有日期在 time t 表达范围内才保证工作正常。对于保守的 time t, 通常范围是从 1970 年到大约 2037 年; 注意有些 time t 的表达不是按照 Unix 和 Posix 标准的。

tm mday 域是个 int, 所以日偏移量超出 32,736 就会上溢。还要注意, 在夏令时转换的时候, 一天并不是 24 小时, 所以不要假设可以用86400 整除。

另一个解决的方法是用 “Julian 日期”, 这可以支持更宽的时间范围。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档