gpt4 book ai didi

ruby-on-rails - Ruby 将十进制持续时间(日|周|月|年)转换为结束日期

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:44 24 4
gpt4 key购买 nike

我有一个start_at、一个十进制的quantity 和一个interval,它是day |星期 |月 |年

start_at = Time.parse('2016-01-01 00:00:00 UTC') # leap year
quantity = BigDecimal.new('1.998') # changed from 2.998, should end on 2/29/16 sometime
interval = 'month' # could be any of day|week|month|year

对于整数,我使用了持续时间,即 1.month,我查看了 Date#advance,尽管它只能识别整数值。

这看起来很简单,但我在标准库或 ActiveSupport 中找不到任何东西。

引用资料:

问题

如何根据小数确定 end_at 日期?

为什么?什么目的?

对于给定的金额给定的时间间隔按比例分配给秒。

期望

我正在寻找关于 advancing 下一个 interval(s) 的 end_at 尽可能准确十进制 数量。给定 interval = 'month',对于小数部分,当您通过月份的开始时,意味着您那个月并使用它的持续时间。例如2016年1月是31天,而2月(闰年)是29天(只有闰年)。

最佳答案

我会说你最好的选择是使用 Ruby 的日期方法根据小数的整数来提前时间,然后计算你的小数是你当前间隔的秒数。

所以对于 1.998 个月,提前 1 个月。找到您所在的当前月份并获得该月的 .998 秒(即 7 月,31x24x60x60x.998),然后将时间提前那么多秒。

关于ruby-on-rails - Ruby 将十进制持续时间(日|周|月|年)转换为结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31330544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com