如何使用ruby将日期格式从MM / DD / YEAR更改为YEAR-MM-DD? 数据从文件中读取。
因为反弹的标准日期格式如2013-10-20。
答案 0 :(得分:3)
require 'Date'
p Date.strptime('10/20/2013','%m/%d/%Y').strftime('%Y-%m-%d') #=> "2013-10-20"
或者如果您不想使用日期模块:
my_string = '10/20/2013'
p my_string.split('/').rotate(2).join('-') #=> "2013-10-20"
答案 1 :(得分:1)
您可以使用strptime来解析日期。之后,您可以使用DateTime对象的成员日,月和年打印日期。
d = DateTime.strptime('28/10/2013', '%m/%d/%Y')
puts "{d.year}-#{d.month}-#{d.day}"
编辑:实际上,打印的更好选择是使用hirolau建议的strftime。
答案 2 :(得分:0)
请注意,YYYY-MM-DD
是日期的ISO 8601表示。因此,对于这种格式,您可以最简单地:
require 'date'
puts Date.strptime( '10/20/2013', '%m/%d/%Y' ).iso8601
Date.strptime( '10/20/2013', '%m/%d/%Y' ).to_s
更一般地说,您可以通过strftime
指定格式字符串:
require 'date'
def convert_date( date_str, in_format='%m/%d/%Y', out_format='%Y-%m-%d' )
Date.strptime(date_str,in_format).strftime(out_format)
end
puts convert_date('10/20/2013')
#=> 2013-10-20
以下是date formatting的格式选项:
%Y
包含世纪的年份(可以为负数,至少4位数)-0001
,0000
,1995
,{{1} },2009
等
14292
未填充(%-Y
.. 1
等)2013
年/ 100(向下舍入,例如2009年%C
)20
年%100(%y
.. 00
)99
一年中的几个月,零填充(%m
.. 01
)
12
未填充(%-m
.. 1
)12
空白填充(%_m
.. 1
)12
完整的月份名称(%B
)
January
大写(%^B
)JANUARY
缩写的月份名称(%b
)
Jan
大写(%^b
)JAN
相当于%h
%b
每月的某一天,零填充(%d
.. 01
)
31
未填充(%-d
.. 1
)31
空白填充(%_d
.. 1
)31
空白填充(与%e
相同)%_d
一年中的某一天(%j
.. 001
)366
完整的工作日名称(%A
)
Sunday
大写(%^A
)SUNDAY
缩写名称(%a
)
Sun
大写(%^a
)SUN
星期几(星期一为1,%u
.. 1
)7
星期几(星期日为0,%w
.. 0
)6
一年中的周数。这一周从星期日开始。 (%U
.. 00
)53
一年中的周数。本周从星期一开始。 (%W
.. 00
)