【问题标题】:Parse hours from string with space delimiter使用空格分隔符从字符串中解析小时数
【发布时间】:2017-04-07 17:35:08
【问题描述】:

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

【问题讨论】:

    标签: ruby datetime date-parsing


    【解决方案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"
    

    公平地说:

    • 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

    【讨论】:

    • ...或DateTime.strptime("2017-...。我更喜欢 Time.strptime("2017-... 只是因为我认为它读起来更好。
    猜你喜欢
    • 2019-12-04
    • 1970-01-01
    • 2011-03-05
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多