2015-03-25 69 views
0

我想知道如何将包含在嵌套数组中的每个第一个元素的日期格式从yyyy-MM-dd转换为dd/MM/yyyy。 接下来是我的试验,试图达到目的,但没有达到目的。如何转换Ruby中嵌套数组的一部分?

csv_string = CSV.generate(:force_quotes => true) do |csv| 
    csv << ['rec_upd_date', 'pro_long_label', 'pro_short_label', 'act_label', 'stt_content', 'stt_label', 'contract_name', 'contract_no', 'accept_no'] 

    res.each do |row| 
    csv << [ 
     row['REC_UPD_DATE'], 
     row['PRO_LONG_LABEL'], 
     row['PRO_SHORT_LABEL'], 
     row['ACT_LABEL'], 
     row['STT_CONTENT'], 
     row['STT_LABEL'], 
     row['CONTRACT_NAME'], 
     row['CONTRACT_NO'], 
     row['ACCEPT_NO'] 
    ] 
    end 
end 

File.open('support_incident_statistics.csv', 'w:cp932') do |file| 
# w:cp932 
    file.write(csv_string) 
end 

csv = CSV.parse(csv_string) 

index = 0; 

csv = csv.map{|csvrow| 
    if index == 0 then 
    next 
    end 

    "#{csvrow[0].slice(8,2)}/#{csvrow[0].slice(5,2)}/#{csvrow[0].slice(0,4)}#{csvrow[1]}#{csvrow[2]}#{csvrow[3]}#{csvrow[4]}#{csvrow[5]}#{csvrow[6]}#{csvrow[7]}}" 

    index = index +1 
} 
+0

它是什么方式不起作用? – xlm 2015-03-25 05:17:03

+0

csv = csv.map {| csvrow |如果csvrow [0] =='rec_upd_date'那么 下一个 结束 #[csvrow [0] .to_s.slice(8,2)+“/”+ csvrow [0] .to_s.slice(5,2) +“/”+ csvrow [0] .to_s.slice(0,4),csvrow [1],csvrow [2],csvrow [3],csvrow [4],csvrow [5],csvrow [6],csvrow csvrow.replace([csvrow [0] .to_s.slice(8,2)+“/”+ csvrow [0] .to_s.slice(5,2)+“/”)[csvrow [8]] csvrow.replace + csvrow [0] .to_s.slice(0,4),csvrow [1],csvrow [2],csvrow [3],csvrow [4],csvrow [5],csvrow [6],csvrow [7]] ) } – 2015-03-25 05:54:54

回答

0

我想知道如何我可以转换每一第一 元件的日期格式包括在从YYYY-MM-DD嵌套数组到DD/MM/YYYY。

转换YYYY-MM-DD到DD/MM/yyyy格式:

d = "2015-03-25" 
d.to_date.strftime("%d/%m/%Y") 
# => "25/03/2015" 

在所提供的代码它不清楚哪些变量包含日期。假设其row['REC_UPD_DATE'],您可以将其转换为所需的格式为:

row['REC_UPD_DATE'].to_date.strftime("%d/%m/%Y") 
相关问题