【问题标题】:How to convert part of nested arrays in Ruby?如何在 Ruby 中转换部分嵌套数组?
【发布时间】:2015-05-28 15:05:31
【问题描述】:

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

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
}

【问题讨论】:

  • 什么方法没效果?
  • 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[7], csvrow[8]] csvrow.replace([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[7]]) }

标签: ruby arrays dictionary nest


【解决方案1】:

我想知道如何转换每个第一个日期格式 嵌套数组中包含的元素从 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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 2015-08-12
    • 2017-05-28
    • 1970-01-01
    • 2018-06-06
    • 2019-03-28
    相关资源
    最近更新 更多