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

24

Формат моей строки даты выглядит следующим образом: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.

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

Ваш Ответ

3   ответа
16

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)

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

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

Это не должно быть правильным ответом, если вопрос говорит «с часовым поясом». Момент не учитывает смещение часового пояса, а использует системный часовой пояс. Зачем вам использовать библиотеку для чего-то, что также может быть сделано путем анализа даты с использованием нативного JS.
Это не работает для меня. Он принимает мой текущий часовой пояс только в объекте Date. Пожалуйста помоги
9

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

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

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

Извини за это. Я проверил это в Chrome (консоль Developer Tools), и он работал нормально для меня. Поскольку это стандартный ECMAScript (JavaScript), я предположил, что он будет работать везде.
Не работает для меня (Я использую это в интеграции данных Pentaho) Marina
Отлично! Благодарю.

Похожие вопросы