我正在阅读一个CSV文件,其中包含有关使用Spoon的推文的信息。发送推文时有一个created_at
字段。
但是,格式有所不同,有些例子是'yyyy/MM/dd HH:mm', 'yyyy-MM-dd HH:mm', 'MM/dd HH:mm' and 'MM-dd'
,这就是我收到错误的原因。
我想要做的是使用日期数据类型并仍然捕获所有数据。我考虑过使用strings cut
步骤或只是将数据类型更改为string
并增加字符的长度,但这可能会以丢失数据为代价。我还能做什么?
答案 0 :(得分:0)
只需将其标注为config
即可。
根据您的使用案例,您可能不必将它们显式转换为日期(延迟评估)。
如果您必须将它们转换为日期,请尝试String
步骤,Javascript
相当宽容。
否则,您可以使用正则表达式测试格式。如果我采用您的给定格式:new Date()
,则代码如下:
'yyyy/MM/dd HH:mm', 'yyyy-MM-dd HH:mm', 'MM/dd HH:mm' and 'MM-dd'
然后使用var created_date;
if(regex = created_at.match(/(\d\d\d\d\)\/(\d\d)\/(\d\d) (\d\d):(\d\d)/))
created_date = new Date(regex[1], regex[2], regex[3], regex[4], regex[5]);
if(regex = created_at.match(/(\d\d\d\d\)\-(\d\d)\-(\d\d) (\d\d):(\d\d)/))
created_date = new Date(regex[1], regex[2], regex[3], regex[4], regex[5]);
if(regex = created_at.match(/(\d\d)\/(\d\d) (\d\d):(\d\d)/))
created_date = new Date(new Date().getFullYear(), regex[1], regex[2], regex[3], regex[4]);
if(regex = created_at.match(/(\d\d)\/(\d\d))
created_date = new Date(new Date().getFullYear(), regex[1], regex[2]);
数据类型保存created_data
。检查输出流中的空值,直到定义了所有格式。