Что я делаю неправильно с DateTime.strptime?
Моя рубиновая программа говорит, что моя дата недействительна, когда я это делаю:
format = "%D/%M/%Y %H:%M:%S:3N"
date = "21/03/2011 16:39:11.642"
DateTime.strptime(time, format)
Я тоже пробовал это:
format = "%D/%M/%Y %H:%M:%S:3"
Все, что я получаю, это:
ArgumentError: invalid date
from /usr/local/lib/ruby/1.9.1/date.rb:1688:in `new_by_frags'
from /usr/local/lib/ruby/1.9.1/date.rb:1713:in `strptime'
from (irb):12
from /usr/local/bin/irb:12:in `<main>'
Ответы
Ответ 1
Похоже, вы путаете директивы формата strptime. Обратите внимание, как %M
находится в format
дважды, один раз представляя месяц и следующий раз, представляющий минуту?
%D
означает дату как %m / %d / %y
.
%D
означает день месяца [01,31]
%M
означает минуту [00,59]
%M
означает номер месяца [01,12]
Это должно работать:
format = "%d/%m/%Y %H:%M:%S"
date_time = "21/03/2011 16:39:11.642"
puts DateTime.strptime(date_time, format) #=> 2011-03-21T16:39:11+00:00
Здесь ссылка на strptime
Ответ 2
Попробуйте использовать
datetime.to_date.strftime(format)
или
datetime.to_time