JavaScript日期对象-如何将一般日期转换为今天的开始日期?
我有一个字符串格式的日期,如下所示:JavaScript日期对象-如何将一般日期转换为今天的开始日期?,javascript,datetime,Javascript,Datetime,我有一个字符串格式的日期,如下所示: 2016-11-02 我使用date('2016-11-02')将其转换为JavaScript日期对象。我的本地时区是美国东部标准时间,上述时间将返回: Tue Nov 01 2016 20:00:00 GMT-0400 (Eastern Daylight Time) 我希望上面的通用日期输入(没有时间戳)和日期函数返回: Wed Nov 02 2016 00:00:00 GMT-0400 (Eastern Daylight Time) 我该怎么做?您
2016-11-02
我使用date('2016-11-02')
将其转换为JavaScript日期对象。我的本地时区是美国东部标准时间,上述时间将返回:
Tue Nov 01 2016 20:00:00 GMT-0400 (Eastern Daylight Time)
我希望上面的通用日期输入(没有时间戳)和日期函数返回:
Wed Nov 02 2016 00:00:00 GMT-0400 (Eastern Daylight Time)
我该怎么做?您可以执行以下操作:
var myDate = '2016-11-02';
// UTC
console.log(new Date(myDate).toUTCString());
// Local
console.log(new Date(myDate).toTimeString());
第一个日志将返回UTC时间,第二个日志将提供本地时间。您可以执行以下操作:
var myDate = '2016-11-02';
// UTC
console.log(new Date(myDate).toUTCString());
// Local
console.log(new Date(myDate).toTimeString());
第一个日志将返回UTC时间,第二个日志将提供本地时间。根据,类似“2016-11-02”的字符串应解析为UTC,因此在偏移量不是00:00的时区中,它将表示2016-11-02 00:00:00以外的某个时间
如果希望将ISO 8601格式的日期字符串解析为本地,则必须自己完成或使用库。解析为本地的简单函数是:
/*将ISO 8601格式的日期字符串解析为本地
**@param{string}s-yyyy-mm-dd格式的日期
**@返回所提供字符串的{Date}“local”日期,或
**如果字符串无效,则日期无效。
*/
函数parseISOasLocal(s){
var b=s.split(/\D/);
var d=新日期(b[0],--b[1],b[2]);
返回d&d.getMonth()==b[1]?d:新日期(NaN);
}
console.log(parseISOasLocal('2016-11-02').toLocalString())代码>根据,类似“2016-11-02”的字符串应解析为UTC,因此在偏移量不是00:00的时区中,它将表示2016-11-02 00:00:00以外的某个时间
如果希望将ISO 8601格式的日期字符串解析为本地,则必须自己完成或使用库。解析为本地的简单函数是:
/*将ISO 8601格式的日期字符串解析为本地
**@param{string}s-yyyy-mm-dd格式的日期
**@返回所提供字符串的{Date}“local”日期,或
**如果字符串无效,则日期无效。
*/
函数parseISOasLocal(s){
var b=s.split(/\D/);
var d=新日期(b[0],--b[1],b[2]);
返回d&d.getMonth()==b[1]?d:新日期(NaN);
}
console.log(parseISOasLocal('2016-11-02').toLocalString())
@johankarsson将EST
添加到字符串的末尾,我得到了2016年11月2日星期三01:00:00 GMT-0400(东部夏令时)
。我要找的是2016年11月2日星期三00:00:00 GMT-0400(东部夏令时)
@JohanKarlsson,就是他干的。使用EDT
进行夏令时调整是否安全?我不想提前一个小时到达Sunday@JohanKarlsson-这是一个糟糕的建议。日期字符串没有与其关联的时区。解析日期加时区完全依赖于实现,因此不可靠。此外,时区名称或缩写也没有标准,EST可能代表3个不同时区中具有不同偏移量的任意一个。@Johankarsson在字符串末尾添加EST
,这给了我Wed Nov 02 2016 01:00:00 GMT-0400(东部夏时制)
。我要找的是2016年11月2日星期三00:00:00 GMT-0400(东部夏令时)@JohanKarlsson,就是他干的。使用EDT
进行夏令时调整是否安全?我不想提前一个小时到达Sunday@JohanKarlsson-这是一个糟糕的建议。日期字符串没有与其关联的时区。解析日期加时区完全依赖于实现,因此不可靠。此外,时区名称或缩写没有标准,EST可能代表3个不同时区中具有不同偏移量的任意一个。在三元语句中检查d.getMonth()==b[1]
有什么附加值?它检查日期和月份的值是否有效,因此parseAsLocal('2016-13-01'))
和parseISOasLocal('2016-12-32')
将返回一个无效的日期,而不是2017-01-01的日期。在三元语句中检查d.getMonth()==b[1]
的附加值是什么?它检查day和month的值是否有效,因此parseISOasLocal('2016-13-01')
和parseISOasLocal('2016-12-32')
将返回无效日期,而不是2017-01-01的日期。