我有如下数组:
date_val = ['12-20-1986', '23-01-2013', '2013-01-01', '12/01/2013', '23/12/1980']
formats = ['mm-dd-yyyy', 'dd-mm-yyyy', 'yyyy-dd-mm', 'mm/dd/yyyy', 'dd/mm/yyyy']
数组formats
显示数组date_val
存储值的格式。
我正在执行一个循环,其中所有值将逐一进入,我需要将数组date_val
中的值转换为required_format
required_format = 'yyyy-mm-dd'
答案 0 :(得分:4)
'yyyy-mm-dd'
不是有效的strpfime
格式。您需要先转换它('%Y-%m-%d'
):
require 'date'
date_val = ['12-20-1986', '23-01-2013', '2013-01-01', '12/01/2013', '23/12/1980']
formats = ['mm-dd-yyyy', 'dd-mm-yyyy', 'yyyy-dd-mm', 'mm/dd/yyyy', 'dd/mm/yyyy']
required_format = 'yyyy-mm-dd'
def to_strf_format(mmddyyyy)
mmddyyyy.sub('yyyy','%Y').sub('dd','%d').sub('mm','%m')
end
new_date_vals = date_val.zip(formats).map do |date_str, mmddyyyy|
date = Date.strptime(date_str, to_strf_format(mmddyyyy))
date.strftime(to_strf_format(required_format))
end
p new_date_vals
#=> ["1986-12-20", "2013-01-23", "2013-01-01", "2013-12-01", "1980-12-23"]