13

我正在从Node.js应用程序(使用Mongoose )将数据保存在MongoDB服务器中。

考虑以下代码:

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

var schemaObj = new Schema({
    field1: String,
    field2: String,
    Datefield: Date//So on...
});

mongooseDB = mongoose.createConnection('mongodb://myserver:port/DBname');
mongooseDB.on('error', console.error.bind(console, 'error in connection'));

mongooseDB.once('open', function (err) {
        var objmodel = db.model('myschema', schemaObj); 
        modelObj.field1 ='value1'; 
        modelObj.Datefield = new Date().toGMTString(); //new Date().toUTCString();
        //So on..
        modelObj.save(function (err) {
            if (err)    
                 //Notify err
            else
                //DO some task after save
        });

    });

在日期字段中,当我使用“toGMTstring()”或“toUTCstring()”时获取以下值

 'Thu, 24 Jan 2013 05:49:04 GMT'

我浏览了以下链接:

toGMTString 已弃用,不应再使用

任何人都可以帮助我理解,关于 Node.js,toUTCstring() 和 toGMTstring() 有什么区别?

4

4 回答 4

21

GMT 和 UTC 是不同的时区,它们分别是格林威治标准时间协调世界时。GMT 是“太阳”时区,而 UTC 是“原子”时区。对于大多数目的,它们本质上是相同的,但是 UTC 更“通用”。

有趣的是,您指向的文档toUTCString仍然显示 GMT 输出:

var today = new Date();
var UTCstring = today.toUTCString();
// Mon, 03 Jul 2006 21:44:38 GMT

对于应用程序之间的数据交换,我更喜欢使用ISO8601之类的东西,它使用 UTC 的“Z”后缀:

2013-01-16T08:19Z

“Z”令人困惑地代表“祖鲁时间”!

于 2013-01-24T06:26:18.367 回答
0

主要用于格式化日期和时间(人类可读)。您也可以使用toLocaleDateString()

var event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

var options = { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' };

console.log(event.toLocaleDateString('en-US', options));
于 2019-03-04T07:44:23.420 回答
0

据我所知,它们是相同的。并且 MDN 的文档已经声明toGMTString已弃用,支持toUTCString

toGMTString() 已弃用,不应再使用。它的实现只是为了向后兼容;请改用 toUTCString()。

于 2016-09-30T16:39:49.530 回答
-1

ISO使用toISOString()

var today = new Date();
var ISOstring = today.toISOString();
// 2020-08-03T23:59:58.123Z
于 2020-07-25T21:36:31.890 回答