从具有空格分隔符的字符串中解析小时数

时间:2017-04-07 17:35:08

标签: ruby datetime date-parsing

我的文件字符串在其标题中包含日期,例如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"

1 个答案:

答案 0 :(得分:3)

你的问题是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"

公平地说:

  • Time#strptime的文档提及它基于Date#strptime
  • Date._parse("2017-03-06 09:23:28")将很高兴地返回{:hour=>9, :min=>23, :sec=>28, :year=>2017, :mon=>3, :mday=>6}

如果您发现Time对象有日期和时间但Date只有一个日期令人困惑,您可以使用DateTime