Подтвердить что ты не робот

Что я делаю неправильно с 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>'
4b9b3361

Ответ 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