Подтвердить что ты не робот

Используйте JavaScript для преобразования строки даты с часовым поясом в объект даты в локальное время

Формат строки даты выглядит следующим образом: YYYY-MM-ДДTчч: мм: сс-0Z00

Пример 1: 2010-03-05T07: 03: 51-0800

пример 2: 2010-07-01T20: 23: 00-0700

Мне нужно создать объект даты, используя эти строки даты. new Date() не работает над этой строкой. Пожалуйста, помогите мне преобразовать эти строки даты в объекты даты с местным часовым поясом.

Спасибо!

Изменить: я использую это в интеграции Pentaho Data Integration 4.3.0.

4b9b3361

Ответ 1

Для этого вы можете использовать библиотеку, такую ​​как Moment.js.

См. синтаксический анализ String + Format.

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 String, который выглядит так, как будто он находится в указанном вами формате, за исключением пробела между секундами времени и часового пояса.

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

Alternative

Второй способ сделать это - Date.js, другая библиотека, которая, похоже, отлично разбирает формат. http://www.datejs.com

Ответ 2

Возьмите мой часовой пояс в качестве примера (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: Пт май 01 2015 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: сб май 02 2015 08:00:00 GMT + 1000 (AEST)

Ответ 3

Строка даты:

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

В локальное представление времени в собственном объекте Date JS:

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