Ruby:中文解析时间

Ruby:中文解析时间,ruby,unicode,cjk,chinese-locale,Ruby,Unicode,Cjk,Chinese Locale,时间是这样的2016年4.月27日(年、月、日) 解析它的好方法是什么 我想我可以做点像这样的事 time = '2016年4月27日' year = time.split('年')[0] 然后重新安排时间。但这也涉及到utf-8编码,我对它不是很熟悉。1.9.3-p551:001>r=/(\d+)年(\d+)月(\d+)日/ 1.9.3-p551 :001 > r = /(\d+)年(\d+)月(\d+)日/ => /(\d+)年(\d+)月(\d+)日/ 1.9.

时间是这样的
2016年4.月27日(年、月、日)

解析它的好方法是什么

我想我可以做点像这样的事

  time = '2016年4月27日'
  year = time.split('年')[0]
然后重新安排时间。但这也涉及到utf-8编码,我对它不是很熟悉。

1.9.3-p551:001>r=/(\d+)年(\d+)月(\d+)日/
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"
=>/(\d+)年(\d+)月(\d+)日/ 1.9.3-p551:002>s='2016年4.月27日' => "2016年4.月27日" 1.9.3-p551:003>m=r.匹配 => # 1.9.3-p551:004>m.to_a => ["2016年4.月27日", "2016", "4", "27"] 1.9.3-p551:005>年、月、日=m[1..-1] => ["2016", "4", "27"] 1.9.3-p551:006>年 => "2016" 1.9.3-p551:007>mo => "4" 1.9.3-p551:008>da => "27"
假设
'2016年4.月27日'
是您的输入字符串,您希望从中得到一个
日期
对象,因为您知道字符串的每个组成部分代表什么,所以可以使用并传递格式字符串:

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 
irb>date=date.strtime(“2016年4.月27日“,%Y年%M月%D日")
=> #
irb>date.year
=> 2016
irb>date.month
=> 4
irb>date.day
=> 27 

regex还可以使用命名捕获来获取日期组件:
r=/(?\d+)年(?\d+)月(?\d+)日/,这样你就可以调用<代码> [M]:[代码] >代码> M[[月] < /代码>,和<代码> M[[天] < /COD>直接在<代码> MatCHDATAs//Cord>对象上。哇,没想到它可以这么简单,谢谢!@ CQCN1991,不客气。如果解决方案以你想要的方式结束,请考虑接受这个答案: