【问题标题】:C++11 number of days since date自日期以来的 C++11 天数
【发布时间】:2012-04-28 21:04:11
【问题描述】:

我需要将日期存储在平面文件中。是否有任何简单的方法可以使用 C++11 中的标准库获取自特定日期(例如自公元 1 年以来)以来的天数?我唯一知道的是:

  • 获取std::tm结构,将所有时间值设置为0
  • 将其转换为 std::time_t(我还不知道正确的方法)
  • 除以time_t得到一天的分辨率

我可以更轻松地执行它吗?

【问题讨论】:

  • 您是否考虑过使用 C++11 中新增的 <chrono> 标准头文件?
  • 当然。但是我没有找到任何与该主题相关的方法。
  • 如果你可以使用boost,我建议你查一下boost.org/doc/libs/1_49_0/doc/html/date_time.html。 C++11 time 类别模板通常用于解析和格式化,我认为它们不会对您有太大帮助。
  • @BasileStarynkevitch:Chrono 是关于计时程序执行的,而不是一般的日期时间类型。
  • @dirkgently 我更喜欢避免使用 boost 库,原因很简单。我对 boost 和 GCC-4.7 有很多问题。但我会调查的。

标签: c++ time c++11


【解决方案1】:

你说的一开始听起来很合理。您可以使用mktime 将 struct tm 转换为 time_t。请注意,mktime 会根据系统/环境设置将其输入解释为本地时间,并且没有任何 UTC 对应项可以在不依赖“额外”库的情况下广泛使用,但这对您来说可能不是问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2017-02-20
    • 2014-11-22
    • 2016-11-12
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    相关资源
    最近更新 更多