【问题标题】:Node csv-stringify format timestamp column节点 csv-stringify 格式时间戳列
【发布时间】:2017-07-25 11:32:33
【问题描述】:

我正在使用 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

如何在输出中保持原始时间戳格式?

我尝试使用格式化程序选项,但没有效果: 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!');
        }
      });
    });

【问题讨论】:

    标签: javascript node.js csv


    【解决方案1】:

    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"
      )
    })
    

    【讨论】:

      【解决方案2】:

      我在没有自定义格式化程序的情况下尝试了您的代码,它按预期工作。我得到 'val1,2016-08-16T23:00:00.000Z' 作为输出。

      但是如果我的输入中有一个日期对象,我会得到时间戳:

      input = [
      {'field1':'val1', 'timemodified': new Date('2016-08-16T23:00:00.000Z')},
      ...
      ]
      

      请检查您的输入中是否有日期对象。

      【讨论】:

        【解决方案3】:

        您可以在文档examples中找到答案

        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);
        });
        

        【讨论】:

          猜你喜欢
          • 2014-09-17
          • 1970-01-01
          • 2019-02-21
          • 2010-10-22
          • 2017-07-11
          • 2011-12-04
          • 1970-01-01
          • 2015-12-14
          • 2016-07-12
          相关资源
          最近更新 更多