我有一个时间对象,想要找到下个月/上个月。添加减去天数不起作用,因为每月的天数不同。
time = Time.parse('21-12-2008 10:51 UTC')
next_month = time + 31 * 24 * 60 * 60递增月份也会下降,因为必须处理滚动
time = Time.parse('21-12-2008 10:51 UTC')
next_month = Time.utc(time.year, time.month+1)
time = Time.parse('01-12-2008 10:51 UTC')
previous_month = Time.utc(time.year, time.month-1)我发现唯一有效的方法是
time = Time.parse('21-12-2008 10:51 UTC')
d = Date.new(time.year, time.month, time.day)
d >>= 1
next_month = Time.utc(d.year, d.month, d.day, time.hour, time.min, time.sec, time.usec)有没有更优雅的方式来做这件事,而我却看不到?你会怎么做?
发布于 2010-04-23 23:51:01
在Time上没有内置的方法来做你想做的事情。我建议您在模块中编写方法来完成这项工作,并扩展Time类,使其在其余代码中的使用更加简单。
您可以使用DateTime,但是这些方法(<<和>>)的命名方式不会使以前没有使用过它们的人能够清楚地看到它们的用途。
发布于 2010-04-23 23:43:03
Ruby on Rails
注意:这个只能在Rails中工作(谢谢Steve!)但我把它留在这里,以防其他人正在使用Rails,并希望使用这些更直观的方法。
非常简单--谢谢Ruby on Rails!
Time.now + 1.month
Time.now - 1.month 或者,如果它与current time (仅限Rails 3+ )相关,则为另一种选择。
1.month.from_now
1.month.ago发布于 2013-11-25 06:23:35
就我个人而言,我更喜欢使用:
Time.now.beginning_of_month - 1.day # previous month
Time.now.end_of_month + 1.day # next month它总是有效的,并且独立于一个月的天数。
查找更多信息in this API doc
https://stackoverflow.com/questions/2699902
复制相似问题