我需要使用正则表达式或其他方式将dateTimezone字符串转换为日期字符串。
"2015-08-18T04:55:00+00:00"
应该以字符串"2015-08-18"
请帮忙
答案 0 :(得分:1)
你的意思是这样吗?
require 'date'
Date.parse("2015-08-18T04:55:00+00:00") # => #<Date: 2015-08-18 ((2457253j,0s,0n),+0s,2299161j)>
Date.parse("2015-08-18T04:55:00+00:00").to_s # => "2015-08-18"
我通常不依赖于parse
,因为它可能会被其他格式混淆,并且在尝试找出格式时会减慢解析速度。相反,使用strptime
是一个很好的选择:
Date.strptime("2015-08-18T04:55:00+00:00", '%Y-%m-%d') # => #<Date: 2015-08-18 ((2457253j,0s,0n),+0s,2299161j)>
或者:
Date.strptime("2015-08-18T04:55:00+00:00", '%F') # => #<Date: 2015-08-18 ((2457253j,0s,0n),+0s,2299161j)>
而且,所有这些都可以与to_s
一起使用来返回字符串版本,因为这是to_s
的用途。
使用日期是进行转化的首选方式,但可以执行:
"2015-08-18T04:55:00+00:00"[/^([^T]+)/, 1] # => "2015-08-18"
甚至更简单:
"2015-08-18T04:55:00+00:00"[/^[^T]+/] # => "2015-08-18"
或者,完全不使用正则表达式,只需将字符串切片:
"2015-08-18T04:55:00+00:00"[0, 10] # => "2015-08-18"
"2015-08-18T04:55:00+00:00"[0 .. 9] # => "2015-08-18"
或者更复杂:
"2015-08-18T04:55:00+00:00".split('T').first # => "2015-08-18"
答案 1 :(得分:1)
最简单的方法是:
"2015-08-18T04:55:00+00:00".to_date.to_s
答案 2 :(得分:0)