给定一个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}/)}
答案 0 :(得分:4)
如果所有的字符串都是这样的话,那就做一些子字符串修改:
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
的全部内容。
答案 1 :(得分:4)
您可以使用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"]
虽然,穆的答案很棒。