[英]Node csv-stringify format timestamp column
我正在使用Node csv-stringify包將對象列表轉換為csv。
其中一列包含時間戳,stringify方法將其轉換為紀元日期。
var stringify = require('csv-stringify');
...
input = [
{'field1':'val1', 'timemodified':'2016-08-16T23:00:00.000Z'},
...
]
stringify(input, function(err, output){
console.log(output);
})
輸出中修改的時間格式為:
1471388400000
如何在輸出中保持原始時間戳格式?
我嘗試使用formatters選項,但沒有效果: http : //csv.adaltas.com/stringify/examples/
stringify(input, {formatters: {
"timemodified": function(value){
return value.format("YYYY/MM/DD hh:mm:ss");
}
}},function(err, output) {
fs.writeFile('userUpload.csv', output, 'utf8', function(err) {
if (err) {
console.log('Error - file either not saved or corrupted file saved.');
} else {
console.log('userUpload.csv file saved!');
}
});
});
我嘗試了沒有自定義格式化程序的代碼,它可以按預期工作。 我得到'val1,2016-08-16T23:00:00.000Z'作為輸出。
但是如果輸入中有日期對象,則會得到時間戳記:
input = [
{'field1':'val1', 'timemodified': new Date('2016-08-16T23:00:00.000Z')},
...
]
請檢查您的輸入中是否有日期對象。
您可以在文檔示例中找到答案
var moment = require('moment');
...
var stringifier = stringify(input, {
formatters: {
date: function(value) {
return moment(value).format('YYYY-MM-DD');
}
}
}, function(err, output) {
console.log(output);
});
從docs ,您可以將“ cast”傳遞給選項。
例:
const stringify = require('csv-stringify');
const assert = require('assert');
stringify([{
name: 'foo',
date: new Date(1970, 0)
},{
name: 'bar',
date: new Date(1971, 0)
}],{
cast: {
date: function (value) {
return value.toISOString()
}
}
}, function (err, data) {
assert.equal(
data,
"foo,1969-12-31T23:00:00.000Z\n" +
"bar,1970-12-31T23:00:00.000Z\n"
)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.