Локальная дата и время – это дата и время, установленные в соответствии с часовым поясом и настройками региона, где используется устройство или программное обеспечение. Она учитывает, например, смещение времени относительно Всемирного координированного времени (UTC), а также летнее время (если оно применяется в регионе).
Универсальная дата и время (UTC) – это мировое временное стандартное соглашение, аналогичное Гринвичскому среднему времени (GMT), но с точностью до фракций секунды, которое не подвержено изменениям, связанным с часовыми поясами и летним временем. UTC используется в авиации, компьютерных технологиях и других областях, где требуется единый временной стандарт.
Чтобы получить локальную дату и время в формате `YYYY-MM-DD HH:MM:SS` в JavaScript, вы можете использовать следующий код:
```javascript
// Функция для добавления начальных нулей
function pad(number) {
return number < 10 ? '0' + number : number;
}
// Получаем локальную дату и время
const now = new Date();
// Конвертируем в локальное время с учетом смещения
const localISOTime = now.getFullYear() +
'-' + pad(now.getMonth() + 1) + // Месяцы начинаются с 0
'-' + pad(now.getDate()) +
' ' + pad(now.getHours()) +
':' + pad(now.getMinutes()) +
':' + pad(now.getSeconds());
console.log(localISOTime);
```
Код выше создаёт экземпляр объекта `Date`, который автоматически устанавливается на текущую локальную дату и время. Затем он форматирует эту дату в указанный формат `YYYY-MM-DD HH:MM:SS`. Функция `pad` добавляет начальные нули ко дням, месяцам, часам, минутам и секундам, если число меньше 10, чтобы сохранить правильный формат.
Чтобы получить время с конкретным смещением относительно UTC, вы можете добавить или отнять разницу в миллисекундах:
```javascript
// Смещение в часах, например, '+3' для времени UTC+3
const offsetHours = 3;
// Получаем смещение в миллисекундах
const offsetMilliseconds = offsetHours * 60 * 60 * 1000;
// Создаем новый объект Date, уже смещенный на необходимое количество часов
const dateWithOffset = new Date(now.getTime() + offsetMilliseconds);
// Остальной код остаётся таким же, только используем `dateWithOffset` вместо `now`
```
Обратите внимание, что данный метод работает для простого смещения времени и не учитывает сложности, связанные с переходом на летнее время и другие особенности часовых поясов. Для учета всех нюансов лучше использовать библиотеки для работы с датами и временем, такие как Moment.js или date-fns, которые могут обрабатывать сложные аспекты работы с датами и временем.