我有一个字符串,它看起来像:如何将字符串拆分为独立的组件以解析为DateTime?
20130518134721
yyyymmddhhmmss
这基本上是一天的时间。知道字符串的格式,并知道年份被填充为四位数字,其他所有字符都填充为两位数字,那么如何分割此字符串以便我可以提取诸如月份或小时等特定信息?
我有一个字符串,它看起来像:如何将字符串拆分为独立的组件以解析为DateTime?
20130518134721
yyyymmddhhmmss
这基本上是一天的时间。知道字符串的格式,并知道年份被填充为四位数字,其他所有字符都填充为两位数字,那么如何分割此字符串以便我可以提取诸如月份或小时等特定信息?
您可以使用DateTime.strptime
将String
转换为DateTime
对象。你可以这样做:
date = DateTime.strptime("20130518134721", "%Y%m%d%H%M%s") → datetime
之后,你可以访问到像hour
或mon
在红宝石Date
对象的不同方法。
date.hour
#=> 13
date.mon
#=> 5
还有,记得require 'date'
使用DateTime
对象。
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
'parse'很有用,而且很聪明,但也会被愚弄。如果你知道格式,最好使用'strptime',这样不会浪费时间去分析使用哪种模式。如果你想依赖将自由格式字符串解析为日期/时间,我建议查看[Chronic](http://chronic.rubyforge.org)。 –
日期最好由Date类处理,如其他人已经证明的那样。分裂字符串成子与固定的宽度通常可与unpack
方法来完成:
year, month, day, hour, min, sec = "20130518134721".unpack("A4A2A2A2A2A2")
puts day #=> 18
虽然问题是“可能重复”的复制,底层需要的是完全不同的,并且是不重复的,在所有,但是关于如何解析日期字符串的问题。 –