Ruby:用中文解析时间

时间:2016-05-01 06:14:54

标签: ruby unicode cjk chinese-locale

时间就像这个2016年4月27日(年,月,日)

什么是解析它的好方法?

我想我可以躲过像

这样的事情
  time = '2016年4月27日'
  year = time.split('年')[0]

然后重新组织时间。但这也涉及encoding utf-8的东西,而且我并不熟悉它。

2 个答案:

答案 0 :(得分:3)

假设'2016年4月27日'是您的输入字符串,并且您想要一个Date对象,因为您知道该字符串的每个组件代表什么,您可以使用Date.strptime并传入格式字符串:

irb> date = Date.strptime("2016年4月27日", "%Y年%m月%d日")
=> #<Date: 2016-04-27 ((2457506j,0s,0n),+0s,2299161j)>
irb> date.year
=> 2016
irb> date.month
=> 4
irb> date.day
=> 27 

答案 1 :(得分:0)

1.9.3-p551 :001 > r   = /(\d+)年(\d+)月(\d+)日/
 => /(\d+)年(\d+)月(\d+)日/
1.9.3-p551 :002 > s = '2016年4月27日'
 => "2016年4月27日"
1.9.3-p551 :003 > m = r.match(s)
 => #<MatchData "2016年4月27日" 1:"2016" 2:"4" 3:"27">
1.9.3-p551 :004 > m.to_a
 => ["2016年4月27日", "2016", "4", "27"]
1.9.3-p551 :005 > yr, mo, da = m[1..-1]
 => ["2016", "4", "27"]
1.9.3-p551 :006 > yr
 => "2016"
1.9.3-p551 :007 > mo
 => "4"
1.9.3-p551 :008 > da
 => "27"