【问题标题】:Is there any time.h function to get the date 14 days?是否有任何 time.h 函数来获取 14 天的日期?
【发布时间】:2021-06-14 20:26:14
【问题描述】:

在我的情况下,我需要获取当前日期和 14 天后的日期作为归还书籍的时间限制。是否有这样的功能或对现有功能的操作?

【问题讨论】:

  • time()返回的值是以秒为单位的,所以加上14*24*60*60?您可以使用 localtime_r() 将其中任何一个拆分为日期和时间。
  • @NateEldredge:并非所有的两周跨度都是 14•24•60•60 秒。日历很难。
  • 它确实有效。不敢相信我没想到。谢谢!
  • @Names:如果你这样做是为了课堂作业,那可能是一个可以接受的解决方案。如果您需要在专业发展中使用日历,请注意它们相当复杂。例如,如果您计算从今天开始的 14•24•60•60 秒的日期,并且在接下来的两周内添加了 leap second,则时间为 14•24•60•60从今天开始的天数将是从今天开始的第 13 天,而不是第 14 天。这只是日历系统中的诸多复杂问题之一。
  • @EricPostpischil 我认为 DST 转换是您正在谈论的问题的一个更好的例子。除非自我上次查看以来发生了什么变化,否则所有 Unix 和 Linux 系统都否认闰秒的存在,并且 Posix 要求这样做,因此闰秒实际上不会导致此类问题。 (如果 time_t 以符合闰秒的方式实现,并且如果替代定义 确实 导致了您所说的问题,我相信 time_t 将无法使用。我相信一个合适的 Unix闰秒实现必须在time_t 之外。)

标签: c function time project time.h


【解决方案1】:

给定分解的时间结构 struct tm,标准 C(和 POSIX)函数 mktime() 将返回与该值关联的 time_t 值。此外,传入的结构元素可能超出其正常范围,mktime() 将对其进行规范化。因此,您可以将 14 添加到结构的 tm_mday 元素中,mktime() 将同时为您提供相应时间的 time_t 值并规范化结构的元素,从而为您提供正确的日期月份、一年中的月份和年份编号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2017-04-16
    相关资源
    最近更新 更多