Освоение преобразования даты и времени из UTC в CST в JavaScript: подробное руководство

В JavaScript преобразование UTC (всемирное координированное время) в CST (центральное стандартное время) может быть распространенным требованием при работе с глобальными вычислениями даты и времени. В этой статье мы рассмотрим различные методы выполнения этой задачи и предоставим вам практические примеры кода. Итак, приступим!

Метод 1: использование метода toLocaleString.
Один простой подход — использовать метод toLocaleStringс опцией timeZoneдля преобразования UTC. в КСТ. Вот пример фрагмента кода:

const utcDate = new Date('2024-01-19T12:34:56Z');
const cstDate = utcDate.toLocaleString('en-US', { timeZone: 'America/Chicago' });
console.log(cstDate);

Метод 2: использование метода toLocaleStringсо смещением часового пояса.
Другой способ — вычислить смещение CST от UTC и применить его к дате UTC. Вот как этого можно добиться:

const utcDate = new Date('2024-01-19T12:34:56Z');
const cstOffset = -6 * 60; // CST offset from UTC in minutes
const cstDate = new Date(utcDate.getTime() + cstOffset * 60 * 1000).toLocaleString();
console.log(cstDate);

Метод 3: использование внешних библиотек (например, Moment.js)
Если вы предпочитаете использовать внешние библиотеки, Moment.js — популярный выбор для обработки даты и времени в JavaScript. Вот пример того, как можно преобразовать UTC в CST с помощью Moment.js:

const utcDate = moment.utc('2024-01-19T12:34:56Z');
const cstDate = utcDate.tz('America/Chicago').format('YYYY-MM-DD HH:mm:ss');
console.log(cstDate);

Метод 4: расчет вручную со смещением часового пояса
Для более практического подхода вы можете вручную рассчитать дату и время CST на основе даты UTC и смещения CST. Вот пример фрагмента кода:

const utcDate = new Date('2024-01-19T12:34:56Z');
const cstOffset = -6 * 60; // CST offset from UTC in minutes
const cstDate = new Date(utcDate.getTime() + cstOffset * 60 * 1000);
const year = cstDate.getUTCFullYear();
const month = cstDate.getUTCMonth() + 1;
const day = cstDate.getUTCDate();
const hours = cstDate.getUTCHours();
const minutes = cstDate.getUTCMinutes();
const seconds = cstDate.getUTCSeconds();
const formattedCSTDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
console.log(formattedCSTDate);