Преобразовать GMT в IST (стандартное время Индии), используя javascript? - PullRequest
0 голосов
/ 15 января 2020

У меня есть формат даты по Гринвичу или UT C.

var mydate  = '2020-01-14T17:43:37.000Z'

Я хочу преобразовать эту дату в формат IST, чтобы в соответствии с этой датой выводился мне в этом формате.

var date = '2020-Jan-15 12:45'


Ответы [ 2 ]

1 голос
/ 15 января 2020

Вы можете указать идентификатор часового пояса IANA в параметрах, переданных toLocaleString. Идентификатор для Индии: Asia/Kolkata.

var s = new Date('2020-01-14T17:43:37.000Z').toLocaleString(undefined, {timeZone: 'Asia/Kolkata'});

. Это сделает правильное преобразование часового пояса, так как ввод в UT C (как указано Z в конце).

undefined означает использование языкового стандарта пользователя для форматирования даты и времени. Обычно это то, что вы хотите. Если вам нужен более конкретный формат (например, тот, который вы указали в своем вопросе), вы можете предоставить указанную c строку локали и / или настроить другие параметры для toLocaleString, как указано в документации .

Также обратите внимание, что конверсия в вашем вопросе неверна. В Индии 5 часов и 30 минут смещения от UT C. Таким образом, правильный вывод - 2020-01-14 23:13:37 (в любом формате, который вам нравится)

0 голосов
/ 16 января 2020

Другой вариант для вас - использовать момент и момент часовой пояс модули для преобразования часового пояса, они очень гибкие, и вы можете форматировать полученный объект даты в соответствии с любым форматом, который вы выберете. sh.

Как уже упоминалось @ matt-johnson-pint (спасибо!), Вы также можете использовать для этой цели очень классную библиотеку Luxon , я добавил пример ниже.

const mydate  = "2020-01-14T17:43:37.000Z"

// Create a UTC date object. The moment constructor will recognize the date as UTC since it includes the 'Z' timezone specifier.
let utcDate = moment(mydate);

// Convert the UTC date into IST
let istDate = moment(mydate).tz("Asia/Kolkata");

console.log("Using Moment.js:");
console.log(`UTC date (iso): ${utcDate.format("YYYY-MM-DD HH:mm:ss")}`);
console.log(`IST date (iso): ${istDate.format("YYYY-MM-DD HH:mm:ss")}`);

const DateTime = luxon.DateTime;

utcDate = DateTime.fromISO(mydate);
istDate = DateTime.fromISO(mydate).setZone("Asia/Kolkata");

console.log(`\nUsing Luxon:`);
console.log(`UTC date (iso): ${utcDate.toFormat("yyyy-LL-dd HH:mm:ss")}`);
console.log(`IST date (iso): ${istDate.toFormat("yyyy-LL-dd HH:mm:ss")}`);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data-1970-2030.js"></script>
<script src="https://moment.github.io/luxon/global/luxon.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...