1

我有一个看起来像这样的字符串:

20130518134721
yyyymmddhhmmss

这基本上是一天中的时间。知道字符串的格式,并且知道年份被填充为四位数字而所有其他数字都被填充为两位数字,我如何拆分这个字符串以便提取特定信息,例如月份或小时?

4

3 回答 3

3

您可以使用DateTime.strptime将 转换StringDateTime对象。您可以执行以下操作:

date = DateTime.strptime("20130518134721", "%Y%m%d%H%M%s") → datetime

之后,您可以访问Dateruby​​ 中对象的不同方法,如hourmon

date.hour               
#=> 13
date.mon
#=> 5

另外,请记住require 'date'使用DateTime对象。

于 2013-05-19T09:59:28.647 回答
1
require 'date'
d = DateTime.parse("20130518134721")
p d.hour #=> 13
p d.mon #=> 5
p d.min #=> 47
p d.day #=> 18
p d.year #=> 2013
于 2013-05-19T10:07:57.660 回答
1

正如其他人所展示的那样,日期最好由 Date 类处理。通常可以使用以下方法将字符串拆分为具有固定宽度的子字符串unpack

year, month, day, hour, min, sec = "20130518134721".unpack("A4A2A2A2A2A2")
puts day #=> 18
于 2013-05-19T15:34:27.540 回答