怎样在日期上加 N 天?怎样取得两个日期的时间间隔?
答案:2 悬赏:10 手机版
解决时间 2021-04-13 12:15
- 提问者网友:酱爆肉
- 2021-04-13 05:23
怎样在日期上加 N 天?怎样取得两个日期的时间间隔?
最佳答案
- 五星知识达人网友:笑迎怀羞
- 2021-04-13 06:23
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 日期”, 这可以支持更宽的时间范围。
但是, 这些方法只有日期在 time t 表达范围内才保证工作正常。对于保守的 time t, 通常范围是从 1970 年到大约 2037 年; 注意有些 time t 的表达不是按照 Unix 和 Posix 标准的。tm mday 域是个 int, 所以日偏移量超出 32,736 就会上溢。还要注意, 在夏令时转换的时候, 一天并不是 24 小时, 所以不要假设可以用86400 整除。
另一个解决的方法是用 “Julian 日期”, 这可以支持更宽的时间范围。
全部回答
- 1楼网友:举杯邀酒敬孤独
- 2021-04-13 08:02
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 整除。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯