【问题标题】:Date arithmetic in ErlangErlang中的日期算术
【发布时间】:2011-10-05 11:20:36
【问题描述】:

我有一个格式为{Y,M,D} 的日期。是否有任何好的支持库或技巧,我可以简单地说,从这个日期减去三个月,而不会遇到无效日期、闰年等问题。

我最近的类似用法是在 MySql 中,你可以输入:

Select '2011-05-31' - Interval 3 Month;

产生'2011-02-28'。我对如何自己编写这个库不感兴趣,这是我想避免的。

【问题讨论】:

    标签: datetime date erlang date-arithmetic


    【解决方案1】:

    我为这类事情创建了一个包含一些有用实用程序的 GitHub gist。如果你愿意,可以随意窃取它。

    https://gist.github.com/104903

    【讨论】:

      【解决方案2】:

      使用edate - 特别是移位功能。

      > edate:shift({2011,5,31}, -3, months).
      {2011,2,28}
      

      在底层它使用日历模块,因此它可以正确处理所有极端情况。

      【讨论】:

        【解决方案3】:
        1> calendar:gregorian_days_to_date(calendar:date_to_gregorian_days({2011, 7, 14}) - 90).     
        {2011,4,15}
        

        http://www.erlang.org/doc/man/calendar.html

        【讨论】:

        • 不用下载第三方模块也能很好用,谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-16
        • 1970-01-01
        • 2017-08-23
        • 2011-02-23
        • 1970-01-01
        • 2021-02-15
        • 1970-01-01
        相关资源
        最近更新 更多