【发布时间】:2016-05-31 11:33:56
【问题描述】:
我正在尝试将 Ruby 中的 UNIX 时间戳四舍五入到最接近的整月。我有以下 UNIX 时间戳,我想将其转换为所示 - 基本上,如果该月的日期是 15 日及以后,它应该舍入到下个月(例如,2 月 23 日舍入到 3 月 1 日;2 月 9 日向下舍入到 2 月 1 日)。
以下是我拥有的时间戳以及我需要帮助实现的结果:
1455846925(2016 年 2 月 19 日)=> 1456790400(2016 年 3 月 1 日)
1447476352(2015 年 11 月 14 日)=> 1446336000(2015 年 11 月 1 日)
1242487963(2009 年 5 月 16 日)=> 1243814400(2009 年 6 月 1 日)。
我可以仅依靠 1-14(向下舍入)/15+(向上舍入)的逻辑。我意识到这并不总是考虑一个月中的天数,如果需要,我可以接受这一点(尽管始终考虑给定月份中的天数的解决方案是一种奖励) .
Ruby 的 DateTime 模块可能能够结合以一个月的秒数为模来完成,但我不太确定如何将它们放在一起。如果我可以直接转换 UNIX 时间戳而无需先将其转换为 Ruby 日期,那也很好。
提前感谢您的帮助。
【问题讨论】:
-
Rails Datetime 有方法 begin_of_month 和 end_of_month 可用于计算。
标签: ruby rounding unix-timestamp epoch datetimeoffset