开发者社区> 问答> 正文

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

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

展开
收起
游客py5kcp7dd6tu6 2022-03-29 21:25:00 492 0
1 条回答
写回答
取消 提交回答
  • 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 日期", 这可以支持更宽的时间范围。处理 Julian 日期的代码可以在以下地方找到: Snippets 收集 (参见问题 18.16); Simtel/Oakland 站点 (文件 JULCAL10.ZIP, 参见问题 18.18) 和 文献中提到的文章Date conversionsciteburki。

    2022-03-29 23:26:55
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载