当前位置: 首页 > 知识库问答 >
问题:

根据当前日期以C /Boost表示ISO 8601持续时间

慕铭
2023-03-14

ISO 8601将持续时间格式声明为P[n]Y[n]M[n]DT[n]H[n]M[n]S。例如,P3Y0.5MT6M表示“3年、半个月和3分钟”。

有各种方法可以转换成unixtime/chrono::duration/whatever,但是我找到的所有解决方案都是用秒为单位的平均月和年持续时间,按照标准这是不正确的。相反,它应该取决于日期,例如< code>01 Feb P1M应该是< code>01 Mar ( 28天),而< code>01 Mar P1M应该是< code>01 Apr ( 31天)。

我可以用哪种方式实现它?在处理所有这些闰年和其他讨厌的事情时,我有比手动实现更好的选择吗?

共有1个答案

秦博延
2023-03-14

最好使用为 C 20 标准化的日期/时间库。巧妙命名的日期库可以执行您建议的操作。这是year_month_day类型可以按照您希望的方式进行月份和年份添加。

此外,到<code>time_point

system_clock::time_point tp = sys_days{sun[5]/may/2016};

year_month_day类型是根据公历实现的,公历被纳入ISO 8601。因此,这种转换不关心“平均值”或任何东西。它获取系统时钟的纪元,并计算从该纪元到给定日期的实际天数。它将考虑公历的所有特质。包括闰年。包括那些本应是闰年但不是闰年的年份。这些将被正确计数。

<code>tp</code>因此将是从纪元之前或之后到所述日期的正确天数。

 类似资料:
  • 问题内容: 我从网络获取日期/时间字符串,格式为“ yyyy / mm / dd’T’HH:MM:SS’Z’”,它采用UTC格式。 现在,我必须确定设备的当前时区,然后将此时间转换为本地时间。 我该怎么做,请建议我! (仅供参考,目前,UTC时间为10:25 AM,印度当前时间为3:55 PM) 问题答案: 尝试使用代替 从文档: …您使用getDefault得到一个TimeZone,它根据程序运

  • 我有ISO8601格式的持续时间值,我将其转换为时间值为整数秒,如下所示: ISO8601格式的持续时间值=“P1Y”。 我将该值存储在“时间-单位-秒”中。因此,当我检索的值将是在int,我想转换回ISO8601持续时间格式,所以我应该得到“P1Y”转换后回来。 有没有快速的方法可以做到这一点?或者我必须把时间的int值转换成float,然后通过某种方法把它转换成ISO8601持续时间。

  • 问题内容: 我想获取一个格式为“ YYYYMMdd”的日期(例如今天是20110627)作为当前一周的星期一。从明天到星期天,我仍然想打印星期一(今天)的日期。然后,下周,重复该过程 问题答案: 如果范围是您的目标,那么您可能需要做一些事情 将输出: 20110628-20110703 有关日期的更多信息 请注意,这仅适用于GNU日期 我读过: 可以通过替换sunfreeware.com版本的日期

  • 本文向大家介绍Python根据当前日期取去年同星期日期,包括了Python根据当前日期取去年同星期日期的使用技巧和注意事项,需要的朋友参考一下 业务的开发时候有一个需求,需要对比当前时间段和去年同星期的时间段的数据,例如当前时间是2019-04-11,是今年的第十五周的周四,如何去取去年的第十五周的周四呢? 查了好多资料没有对应的处理方法,于是自己写了这个方法,如果您有更好的方法,可以留言。 py

  • 问题内容: 我在将日期正确插入数据库中时遇到问题。 我使用这种格式,并且正确回显,但是,当我插入 它似乎无法成功运行,时间仍然是00:00:00,如果您能找到很好的解决方案,谢谢。 问题答案: 如果要存储当前时间,请使用MYSQL的函数。 如果需要使用PHP进行格式化,请尝试

  • 本文向大家介绍js显示当前日期时间和星期几,包括了js显示当前日期时间和星期几的使用技巧和注意事项,需要的朋友参考一下 JavaScript获取当前日期时间同时显示星期几,具体代码如下: 在网页上及时动态显示当前的日期时间并显示星期的做法: 关于这方面的内容网上很多,有js获取当前日期时间同时显示星期,js获取当前时间和一星期钱的时间等内容,都很具有参考价值,希望大家多阅读类似文章,将类似方法熟练