【问题标题】:Ruby - DateTime for DatabaseRuby - 数据库的日期时间
【发布时间】:2010-01-05 09:20:13
【问题描述】:
我有一个语法为“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”的“时间字符串”?
非常感谢提前和最好的问候
【问题讨论】:
标签:
ruby
database
datetime
date
【解决方案1】:
如果您使用的是 Rails/ActiveSupport,那么to_s(:db) 将是最短的方法:
Time.now.to_s(:db)
=> "2017-05-22 11:14:40"
【解决方案2】:
短一点
t = Time.now
puts t.strftime("%F %T")
=> "2015-01-06 14:01:05"
【解决方案3】:
iso8601 方法也很有用:
>> Time.now.utc.iso8601
=> "2015-05-08T16:45:22Z"
【解决方案4】:
借助内置的 Time 类,您可以像在 PHP 中一样格式化日期,请参阅文档 there。
这将适用于您的情况:
t = Time.now
puts t.strftime("%Y-%m-%d %H:%M:%S")
【解决方案5】:
ActiveRecord 倾向于将日期/时间存储为 UTC,因此使用 utc 将使您的数据更加一致
t = Time.now.utc
puts t.strftime("%F %T")
=> "2016-05-06 19:05:01"