【问题标题】: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"
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-10-12
            • 1970-01-01
            • 2017-05-17
            • 1970-01-01
            • 2019-10-06
            • 2013-04-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多