33

我的日期字符串的格式如下所示:yyyy-MM-ddTHH:mm:ss-0Z00

示例 12010-03-05T07:03:51-0800

示例 22010-07-01T20:23:00-0700

我需要使用这些日期字符串创建一个日期对象。new Date()不适用于此字符串。请帮我将这些日期字符串转换为具有本地时区的日期对象。

谢谢!

编辑:我在 Pentaho Data Integration 4.3.0 中使用它。

4

3 回答 3

29

以我的时区为例(AEST):

function parseDate(str_date) {
  return new Date(Date.parse(str_date));
}


var str_date = "2015-05-01T22:00:00+10:00"; //AEST time
var locale_date = parseDate(str_date);

locale_date:2015 年 5 月 1 日星期五 22:00:00 GMT+1000 (AEST)

var str_date = "2015-05-01T22:00:00+00:00" //UTC time
var locale_date = parseDate(str_date);

locale_date:2015 年 5 月 2 日星期六 08:00:00 GMT+1000 (AEST)

于 2015-05-25T03:24:18.933 回答
22

您可以使用Moment.js等库来执行此操作。

请参阅字符串 + 格式解析。

http://momentjs.com/docs/#/parsing/string-format/

以下内容解析您提供的日期,但您可能需要根据需要对其进行修改。

var oldDate = "2010-03-05T07:03:51-0800";

var dateObj = moment(oldDate, "YYY-MM-DDTHH:mm:ssZ").toDate();

或者,请参阅 Moment 的字符串解析器,它看起来像您提供的格式,除了时间的秒数和时区之间的空格。

http://momentjs.com/docs/#/parsing/string/

选择

第二种方法是 Date.js,另一个似乎可以很好地解析格式的库。http://www.datejs.com

于 2012-08-02T02:51:26.413 回答
14

日期字符串:

var strDate = "2010-07-01T20:23:00-0700";

本地 JS Date 对象中的本地时间表示:

var ltzDate = (new Date(strDate)).toLocaleString();

于 2012-08-02T03:13:24.453 回答