【问题标题】:Convert string datetime to Ruby datetime将字符串日期时间转换为 Ruby 日期时间
【发布时间】:2014-02-12 03:18:12
【问题描述】:

如何将此“2013-10-20 18:36:40”转换为 Ruby 日期时间?

我正在尝试以下方法,但它不起作用:

"2013-10-20 18:36:40".to_datetime

那就是这样,错过了时间:

2013-10-20 00:00:00 UTC

【问题讨论】:

  • 如果您不想全部加载代码,如果您在代码前面加上require 'active_support/all'(或只是require 'active_support/core_ext/string/conversions'),您的代码将起作用。

标签: ruby date datetime


【解决方案1】:

使用DateTime::strptime:

require 'date'
DateTime.strptime("2013-10-20 18:36:40", "%Y-%m-%d %H:%M:%S")
#<DateTime: 2013-10-20T18:36:40+00:00 ((2456586j,67000s,0n),+0s,2299161j)>

【讨论】:

    【解决方案2】:

    如果您的系统上安装了 rails,您可以执行以下操作:--

    require 'active_support/core_ext/string/conversions'
    
    "2013-10-20 18:36:40".to_time
    
    
    
    1.9.2p320 :001 > require 'active_support/core_ext/string/conversions'
     => true
    1.9.2p320 :003 > "2013-10-20 18:36:40".to_time
     => 2013-10-20 18:36:40 UTC 
    

    【讨论】:

    • active_support 在 rails 中可用,在 ruby​​ 中不可用。
    【解决方案3】:

    还有DateTime#parse方法:

    2.1.0 :001 > require 'date'
     => true 
    2.1.0 :002 > DateTime.parse('2013-10-20 18:36:40')
     => #<DateTime: 2013-10-20T18:36:40+00:00 ((2456586j,67000s,0n),+0s,2299161j)> 
    

    如果您使用 Rails,请考虑编写时区安全代码:

    Time.zone.parse("2013-10-20 18:36:40")
    

    http://www.elabs.se/blog/36-working-with-time-zones-in-ruby-on-rails

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 2017-05-20
      • 2021-05-31
      • 2019-04-12
      相关资源
      最近更新 更多