如何使用 ruby 将日期格式从 MM/DD/YEAR 更改为 YEAR-MM-DD?从文件中读取数据。
因为反弹的标准日期格式类似于 2013-10-20。
require 'Date'
p Date.strptime('10/20/2013','%m/%d/%Y').strftime('%Y-%m-%d') #=> "2013-10-20"
或者,如果您不想使用 Date 模块:
my_string = '10/20/2013'
p my_string.split('/').rotate(2).join('-') #=> "2013-10-20"
您可以使用strptime来解析日期。之后,您可以使用 DateTime 对象的成员日、月和年打印日期。
d = DateTime.strptime('28/10/2013', '%m/%d/%Y')
puts "{d.year}-#{d.month}-#{d.day}"
编辑:实际上,打印的更好选择是按照 hirolau 的建议使用strftime 。
请注意,这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
以下是日期格式的格式选项:
%Y
带世纪的年份(可以是负数,至少 4 位数字)-0001
, 0000
, 1995
, 2009
, 14292
, 等。
%-Y
未填充(1
..2013
等)%C
年 / 100(向下取整,例如20
2009 年)%y
年 % 100 ( 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
)%u
星期几(星期一是 1,1
.. 7
)%w
星期几(星期日是 0,0
.. 6
)%U
一年中的周数。一周从星期日开始。( 00
.. 53
)%W
一年中的周数。一周从星期一开始。( 00
.. 53
)