如何使用 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(向下取整,例如202009 年)%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)