2013-08-15 2 views
2

Я пытаюсь преобразовать в формат времени в формате Mysql, но секунды не конвертируются, только дата выглядит нормально.Почему секунды не конвертируются (strptime/strftime)?

1.9.3-p448 :030 > d = Date.strptime "26 Jul 2013 00:04:52 UTC", '%d %b %Y %H:%M:%S %z' 
=> #<Date: 2013-07-26 ((2456500j,0s,0n),+0s,2299161j)> 
1.9.3-p448 :031 > d.strftime ("%Y-%m-%d %H:%M:%S") 
=> "2013-07-26 00:00:00" 

ответ

4

Вы используете Date, у которого нет времени. Попробуйте с помощью DateTime:

irb [1.9.3]$ require "date" 
=> true 
irb [1.9.3]$ d = DateTime.strptime "26 Jul 2013 00:04:52 UTC", '%d %b %Y %H:%M:%S' 
=> #<DateTime: 2013-07-26T00:04:52+00:00 ((2456500j,292s,0n),+0s,2299161j)> 
irb [1.9.3]$ d.strftime ("%Y-%m-%d %H:%M:%S") 
=> "2013-07-26 00:04:52" 
1

Вы используете использование неправильного типа DateTime

1.9.3-p448 :030 > d = DateTime.strptime "26 Jul 2013 00:04:52 UTC", '%d %b %Y %H:%M:%S %z' 
=> #<DateTime: 53060389273/21600,0,2299161> 
1.9.3-p448 :031 > d.strftime ("%Y-%m-%d %H:%M:%S") 
=> "2013-07-26 00:04:52" 
2

Вы должны использовать Time class InstEd из Date. Причина Date содержит только дату, такую ​​как YYYY-MM-DD.

Пример:

[email protected]:~# irb 
irb(main):001:0> require 'time' 
=> true 
irb(main):002:0> t = Time.parse("26 Jul 2013 00:04:52 UTC") 
=> Fri Jul 26 00:04:52 UTC 2013 
irb(main):003:0> t.strftime("%Y-%m-%d %H:%M:%S") 
=> "2013-07-26 00:04:52" 
Смежные вопросы