Ruby - 数据库中的日期时间

7

我有一个数据库列,其语法为“0000-00-00 00:00:00”。 在PHP中,我会使用以下代码: date('Y-m-d H:i:s');

而在Ruby中,则需要使用:

require 'date'
now = DateTime::now()
puts "#{now.year()}-#{now.mon()}-#{now.mday()} #{now.hour()}:#{now.min()}:#{now.sec()}"

结果是: “2010-1-5 10:16:4” 这不太好。我怎么能创建一个格式为“0000-00-00 00:00:00”的时间字符串呢?
提前感谢您的帮助和最好的问候。

请参见https://dev59.com/PXM_5IYBdhLWcg3wyWWt。 - glmxndr
7个回答

9
你可以通过内置的Time类来像在PHP中一样格式化日期,详见文档
对于你的情况,可以这样做:
t = Time.now
puts t.strftime("%Y-%m-%d %H:%M:%S")

3

iso8601方法也可以很有用:

>> Time.now.utc.iso8601
=> "2015-05-08T16:45:22Z"

3

稍微短一点

t = Time.now
puts t.strftime("%F %T")

=> "2015-01-06 14:01:05" 

2

如果您正在使用Rails/ActiveSupport,那么使用to_s(:db)是最简单的方法:

Time.now.to_s(:db)
=> "2017-05-22 11:14:40"

0

ActiveRecord 倾向于将日期/时间存储为 UTC,因此使用 utc 将使您的数据更加一致。

t = Time.now.utc
puts t.strftime("%F %T")

=> "2016-05-06 19:05:01"

0
请注意,Rails 还存储微秒精度。也就是说,在数据库格式中,微秒是秒后的6个数字:
Time.now.strftime('%Y-%m-%d %H:%M:%S.%6N')
=> "2022-10-26 12:30:26.243506"

或者:

Time.now.strftime('%F %T.%6N')
=> "2022-10-26 12:34:37.803091"

0

Time#to_s(:db)已被弃用,请使用Time#to_fs(:db)

警告:Time#to_s(:db)已被弃用。请改用Time#to_fs(:db)。

提示:如果我们知道缩写的含义,就更容易记住了,在这种情况下,f代表formatted。还有一个别名to_formatted_s


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接