【发布时间】:2011-07-23 00:11:19
【问题描述】:
给定一个 DateTime 字符串数组,我只想获取时间,例如10:30:00。
到目前为止,我想出了这个,但它不会给我正确的结果:
["2011-07-30 10:00:00","2011-07-30 12:00:00"].each{|item| item.match(/\d{2}:\d{2}:\d{2}/)}
【问题讨论】:
标签: ruby regex arrays string datetime
给定一个 DateTime 字符串数组,我只想获取时间,例如10:30:00。
到目前为止,我想出了这个,但它不会给我正确的结果:
["2011-07-30 10:00:00","2011-07-30 12:00:00"].each{|item| item.match(/\d{2}:\d{2}:\d{2}/)}
【问题讨论】:
标签: ruby regex arrays string datetime
如果所有的字符串真的都是这样,那么只需做一些子字符串修改:
a = ["2011-07-30 10:00:00","2011-07-30 12:00:00"]
times = a.map { |e| e[11,8] }
如果您的时间戳包含 2011-07-30 10:00:00.1123、2011-07-30T10:00:00 或 2011-07-30 10:00:00 +0700 等内容,这也将起作用。
如果你想对未来更友好,那么你可以这样做:
off = '9999-99-99 '.length
len = '99:99:99'.length
times = a.map { |e| e[off, len] }
所以没有人会猜到11 和8 的含义。
【讨论】:
您可以使用来自 Ruby 的出色的 DateTime 库来实现相同的目标。
require 'date'
["2011-07-30 10:00:00","2011-07-30 12:00:00"].map{|item|
DateTime.parse(item).strftime("%H:%M:%S")
}
=> ["10:00:00", "12:00:00"]
不过,穆的回答很棒。
【讨论】: