【问题标题】:Date format not getting updated (YYYYMMDD) when assigned back to object分配回对象时日期格式未更新 (YYYYMMDD)
【发布时间】:2019-02-18 12:17:02
【问题描述】:

我想要一个简单的 YYYYMMDD 格式,以便可以在有角度的前端显示它。

在这里,在对日期对象进行操作后,我想将其分配回结果对象中的TIMESTAMP 列。 TIMESTAMP 在数据库 (postgres) 中设置为 Date 对象。 TIMESTAMP 列在分配newDatex 时仍保留- 分隔符。

我什至尝试过使用momentjs,但无济于事。

我已经查看了this,但它无助于解决我的问题。我不希望在数据库中更新格式。我需要更新它,以便我可以将更新的格式 (YYYYMMDD) 发送到我的前端。

app.get('/api/:date', (req, res) => {
    var date = req.params.date;

    Model.findAll({
        where: {
            TIMESTAMP: {
                [Op.eq]: date
            }
        },
        order: [
            ['SYMBOL', 'ASC']
        ]
    }).then( result => {

        if (result != undefined){

            let i = 0;


            let year = new Date(result[i].TIMESTAMP)


            for (i = 0; i < result.length; i++) {
                if(result[i].TIMESTAMP != undefined){
                    let date = year.getDate().toString()
                    let month = (year.getMonth() + 1).toString()
                    let newyear = year.getFullYear().toString();
                    (date.length == 1) && ( date = '0' + date);
                    (month.length == 1) && (month = '0' + month);

                    let newDatex = new String();
                    newDatex = newyear + month + date;
                    console.log('modified date:', newDatex)
                    moment(result[i].TIMESTAMP).format("YYYYMMDD");

                    result[i].TIMESTAMP = new String();
                    result[i].TIMESTAMP = newDatex;

                    console.log('should be removing  "-" but isn\'t: ',result[i].TIMESTAMP)
                }
            }
            res.json(result)

        }
    })

});

【问题讨论】:

    标签: node.js sequelize.js momentjs


    【解决方案1】:

    我以任何方式将日期输入到新的 Date() 构造函数中,并像这样格式化

    var d = new Date('05 October 2011 14:48 UTC');
    var day = d.getUTCDate();
    var month = d.getUTCMonth() + 1;
    var year = d.getFullYear();
    
    // Check day for length to format
    if (day.length < 2) {day = '0' + day};
    console.log(`${year}${month}${day}`);
    

    然后得到这个:

    还希望你没有在你引用的帖子中得到答案,那个人正在修改一个内置对象的原型链,这是一个巨大的禁止。

    让我知道这是否适合你。

    另外,如果您在 Postgres 中的数据类型是“日期”而不是 varchar 之类的,它可能会在您存储记录时自动为您格式化。因此,每次拉取数据时,您可能都必须更改数据类型或重新格式化数据。

    【讨论】:

    • 嗨,日期操作没问题。分隔符 - 仅在我尝试将其分配给 result[i].TIMESTAMP 时才添加。数据库中的 TIMESTAMP 列确实有一个 date 类型,但我现在不想接触数据库。
    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多