Разбирать часы из строки с разделителем пробелом

У меня есть строки файлов, в заголовках которых есть даты, например 2017-03-06 092328 - iPhone - Music Show - street performance, while walking the dog.m4a

Я хотел бы разобрать дату нашей этой строки, потому что мне нужно распечатать ее в формате, удобном для подкастов.

Я могу разобрать дату, но по какой-то причине компонент времени отказывается разбираться :)

Date.strptime("2017-03-06 092328", "%Y-%m-%d %H%M%S").strftime(%Y-%m-%d %H%M%S)

Ожидаемый результат:

"2017-03-06 092328"

Фактический выход

"2017-03-06 000000"

person Maxim Veksler    schedule 07.04.2017    source источник


Ответы (1)


Ваша проблема в том, что Date - это (какой сюрприз!) Дата, например: «Не время, а просто свидание».

require 'time'
Time.strptime("2017-03-06 092328", "%Y-%m-%d %H%M%S").strftime("%Y-%m-%d %H:%M:%S")
#=> "2017-03-06 09:23:28"

Чтобы быть справедливым :

  • документация _3 _ упоминает, что он основан на Date#strptime
  • Date._parse("2017-03-06 09:23:28") с радостью вернется {:hour=>9, :min=>23, :sec=>28, :year=>2017, :mon=>3, :mday=>6}

Если вас сбивает с толку тот факт, что у объекта Time есть дата и время, а у Date только дата, вы можете использовать _ 9_.

person Eric Duminil    schedule 07.04.2017
comment
... или DateTime.strptime("2017-.... Я предпочитаю это Time.strptime("2017-... только потому, что думаю, что это лучше читается. - person Cary Swoveland; 07.04.2017