如何使Time.now不那么精确?

时间:2014-10-02 18:53:31

标签: ruby rubymine

我只想返回一个不太精确的截断版本的Time.now。

当我运行Time.now时,我得到一个非常精确的对象2014-10-02 14:49:47 -0400tim。我只想要 YYYY-MM-DD HH:MM:MM。

如何(临时)转换Time.now返回对象的精度?

2 个答案:

答案 0 :(得分:1)

strftime()允许您为时间对象提供格式字符串。格式标志列表可以在文档

中找到

文档示例:

t = Time.new(2007,11,19,8,37,48,"-06:00") #=> 2007-11-19 08:37:48 -0600
t.strftime("Printed on %m/%d/%Y")   #=> "Printed on 11/19/2007"
t.strftime("at %I:%M%p")            #=> "at 08:37AM"

你的例子:

t.strftime("%Y-%m-%d %T")    #=> YYYY-MM-DD HH:MM:MM.

答案 1 :(得分:0)

您可以创建一个新的Time对象,该对象是四舍五入到最近的分钟的原始时间:

require 'time'

t = Time.now
  #=> 2014-10-02 12:40:22 -0700
new_time = t + (t.sec >= 30 ? 60-t.sec : -t.sec)
  #=> 2014-10-02 12:40:00 -0700

t += 30
  #=> 2014-10-02 12:40:52 -0700
new_time = t + (t.sec >= 30 ? 60-t.sec : -t.sec)
  #=> 2014-10-02 12:41:00 -0700