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

Формат моей строки даты выглядит следующим образом:yyyy-MM-ddTHH:mm:ss-0Z00

Example 1: 2010-03-05T07:03:51-0800

Example 2: 2010-07-01T20:23:00-0700

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

Спасибо!

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

 jfs02 авг. 2012 г., 05:23
этоrfc 3339 отформатировать профиль ISO 8601.new Date("2010-07-01T20:23:00-0700") у меня работает в Firefox / Chrome.
 Marina02 авг. 2012 г., 13:37
Я использую его в интеграции данных Pentaho.

Ответы на вопрос(3)

Решение Вопроса

Moment.js сделать это.

Смотрите разбор String + Format.

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

Следующиеshould проанализируйте дату, которую вы предоставили, но вам может потребоваться изменить ее для своих нужд.

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/

Alternative

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

 19 июн. 2015 г., 08:54
Это не работает для меня. Он принимает мой текущий часовой пояс только в объекте Date. Пожалуйста помоги
 08 июн. 2017 г., 11:21
Это не должно быть правильным ответом, если вопрос говорит «с часовым поясом». Момент не учитывает смещение часового пояса, а использует системный часовой пояс. Зачем вам использовать библиотеку для чего-то, что также может быть сделано путем анализа даты с использованием нативного JS.

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)

 13 дек. 2017 г., 07:56
Это не работает в Safari Mac. новая дата (Date.parse ("2017-12-13GMT + 0530"))
 13 авг. 2015 г., 17:18
Это должен быть правильный ответ, спасибо за помощь.

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

Для представления местного времени в собственном объекте JS Date:

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

 03 авг. 2012 г., 02:01
Извини за это. Я проверил это в Chrome (консоль Developer Tools), и он работал нормально для меня. Поскольку это стандартный ECMAScript (JavaScript), я предположил, что он будет работать везде.
 17 авг. 2015 г., 20:28
Отлично! Благодарю.
 Marina02 авг. 2012 г., 13:42
Не работает для меня (Я использую это в интеграции данных Pentaho)

Ваш ответ на вопрос