javascript - Nodejs Mongoose : Trying to save date in UTC Timezone but its saving in local time zone

标签 javascript node.js mongodb datetime mongoose

我是 Nodejs 和 mongodb 的新手。我正在使用 mongoose 作为 mongodb,每当我尝试将日期保存到数据库中时,我都会遇到与日期相关的问题,它会自动转换为本地时区,但它不应该发生。

我已将 Node 时区“UTC”设置为 .env 文件,并且当我执行 console.log(new Date()) 时它正在工作,它根据 UTC 返回当前日期时间。但是当我尝试将其保存到 Mongoose 时,它转换为本地时区。我已经尝试过使用 Date 字段以及 timestamps : true 它将两者都转换为本地时区。

我的代码是 // Mongoose 模型

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var activitySchema = new Schema({
    'userId': Number,
    'data': Array,
    'otherDetails': Array,
    'date':Date
}, {
    timestamps: false
});
module.exports = mongoose.model('activity', activitySchema);

//保存代码

let na = new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '')+".100";
 var activity = new activityModel({
            userId : req.user.user_id,
            otherDetails : req.body.otherDetails,
            data : req.body.data,
            date : na.toString()

        });

        activity.save();

最佳答案

根据this post中的答案,似乎 Mongo 自动以 UTC 格式保存所有日期。因此,您需要在某处进行转换以转换为您正在寻找的时区。或者,您可以将日期存储为字符串,并在从数据库读取后将其解析为日期。

关于javascript - Nodejs Mongoose : Trying to save date in UTC Timezone but its saving in local time zone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50393088/

相关文章:

node.js - 如何根据用户表单输入查询api

node.js - Passport session 持久性

solaris10 64 位上的 Mongodb - 我在尝试运行 ./mongod 时得到 'Invalid argument'

javascript - 我怎样才能让我的新项目符号点显示一个字符串?

javascript - 根据用户输入打印 for 循环

javascript - 为什么我不能使用 Chrome 的 "Inspect Element"修改此代码中的 Javascript?

node.js - 服务器端的 SuperCluster

javascript - Chrome 控制台从变量返回 8 Nan

mongodb - 使用golang mongodb计算管道中的总分组记录

node.js - 如何在 mongoDB 中创建复合唯一键