Javascript Node.js日期参数
我正在创建一个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
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格式也可以。