在将日期转换为纪元时使用strptime,strftime时出错

时间:2015-07-22 03:46:06

标签: ruby datetime

我正在尝试从csv文件中提取日期并将其转换为纪元时间

function getDesc() {
    var desc = document.head.querySelector('meta[name=description]');
    return desc ? desc.content : undefined;
}

我得到无效日期(ArgumentError)作为结果。但是,如果我打印出日期工具,请随机选择其中一个输出并将其粘贴到第3行的日期工具中,我会得到一个纪元值。我究竟做错了什么? dateper是字符串值,strptime减去strftime似乎给出了输出。

month.csv示例:

7/26/13 12:00:00 AM -05:00,62.2,63.02,62.07,63.02,5.00168E + 07
8/23/13 12:00:00 AM -05:00,71.84,71.93,71.36,71.6,5.55304E + 07
8/26/13 12:00:00 AM -05:00,71.56,72.91,71.52,71.87,8.26536E + 07
8/27/13 12:00:00 AM -05:00,71.16,71.81,69.49,69.82,1.058488E + 08

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

某处有一些格式错误的日期。使用rescue可以避免脚本窒息。

CSV.foreach(File.path("month.csv")) do |row|
 dateper=row[0].split(',')[0] 
 p DateTime.strptime(dateper,"%m/%d/%y %I:%M:%S %p %z").strftime("%s") rescue p "malformed date:#{dateper} on line #{$.}"
end

这将允许脚本继续并向您显示错误的日期。