Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js日期参数_Javascript_Node.js_Date_Express - Fatal编程技术网

Javascript Node.js日期参数

Javascript Node.js日期参数,javascript,node.js,date,express,Javascript,Node.js,Date,Express,我正在创建一个node.js端点,它接受开始日期/时间和结束日期/时间作为参数。我一直把它们当作一根绳子传递: var body = { relatedObjectId: "561ee6bbe4b0f25b4aead5c8", startTime : "11/13/2015 03:00:00PM", endTime: "11/13/2015 03:30:00PM" }; 在我的服务课上: var timeT

我正在创建一个node.js端点,它接受开始日期/时间和结束日期/时间作为参数。我一直把它们当作一根绳子传递:

var body = {
            relatedObjectId: "561ee6bbe4b0f25b4aead5c8",
            startTime : "11/13/2015 03:00:00PM",
            endTime: "11/13/2015 03:30:00PM"
        };
在我的服务课上:

var timeTicket = new TimeTicket();
timeTicket.tutorId = tutorId;
timeTicket.startTime = new Date(startTime);
timeTicket.endTime = new Date(endTime);

timeTicket.save(function(err, timeTicket){
    if(err){
        return next(err, null);
    }

    return next(null, timeTicket);
});

但是,演员阵容总是失败,因此我最终将开始时间和结束时间值的日期定为1970年。显而易见的解决方案是使用UTC格式,但正确的方法是什么?

按照Phil的建议使用ISO 8601格式,或者简单地以毫秒为单位传递日期(自1970年以来)

例如,
新日期(1447378736842)
新日期相同(“2015-11-13T01:38:56.842Z”)

要以ISO 8601格式获取当前日期,可以执行以下操作:

var d = new Date();
var n = d.toISOString();
tl;dr版本:这是您的
身体
对象的外观。出于演示目的,我使用毫秒表示开始时间,ISO 8601字符串表示结束时间。两者都是有效的

var body = {
            relatedObjectId: "561ee6bbe4b0f25b4aead5c8",
            startTime : 1447378736842,
            endTime: "2015-11-13T01:38:56.842Z"
        };

使用格式,例如“2015-11-13T15:00:00.000Z”通常,使用日期构造函数解析字符串是不可靠的,不应使用。但是,Node.js环境可能已经足够标准化,ISO 8601 UTC格式的字符串才是可靠的。@RobG,您是否建议使用基于数字的格式更好?在什么情况下解析字符串是不可靠的?@EricH如果“基于数字”的意思是传递时间值(例如,自1970-01-01T00:00:00Z起的秒或毫秒),则是。在ECMAScript中,使用日期构造函数解析字符串(与使用Date.parse相同)一直是个问题。然而,Node.js不像浏览器那样负担沉重,代码通常是为一个环境编写的,而不是为未知的大量javascript实现编写的,因此使用ISO 8601格式也可以。