JavaScript日期对象 - 如何将通用日期转换为今天的开始日期?

时间:2016-11-03 00:22:35

标签: javascript datetime

我有一个字符串格式的日期,如下所示:

2016-11-02

我使用date('2016-11-02')将其转换为JavaScript日期对象。我当地的时区是EST,上面的时区将返回:

Tue Nov 01 2016 20:00:00 GMT-0400 (Eastern Daylight Time)

我希望上面的通用日期输入(没有时间戳)和日期函数返回:

Wed Nov 02 2016 00:00:00 GMT-0400 (Eastern Daylight Time)

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

var myDate = '2016-11-02';

// UTC
console.log(new Date(myDate).toUTCString());

// Local
console.log(new Date(myDate).toTimeString());

第一个日志将返回UTC时间,第二个日志将为您提供当地时间。

答案 1 :(得分:0)

根据ECMA-262,像“2016-11-02”这样的字符串应该被解析为UTC,因此在偏移量不是00:00的时区中,它将代表2016-11之外的一些时间-02 00:00:00。

如果要将ISO 8601格式的日期字符串解析为本地,则必须自己进行或使用库。一个简单的解析为local的函数是:

/* Parse an ISO 8601 format date string as local
** @param {string} s - date in yyyy-mm-dd format
** @returns {Date} "local" date for provided string, or an
**                  invalid date if string is invalid.
*/
function parseISOasLocal(s) {
  var b = s.split(/\D/);
  var d = new Date(b[0], --b[1], b[2]);
  return d && d.getMonth() == b[1]? d : new Date(NaN);
}

console.log(parseISOasLocal('2016-11-02').toLocaleString());