Похоже, вы запутали директивы формата 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