GetUTCHours: примеры (JAVASCRIPT)

Метод getUTCHours для работы со временем в JavaScript
Раздел: Дата и время, UTC методы
getUTCHours: number

Описание функции getUTCHours

Метод getUTCHours() применяется к объектам Date в JavaScript. Он возвращает часы указанной даты по Всемирному координированному времени (UTC) в виде целого числа от 0 до 23. Этот метод часто используется в приложениях, где необходима независимая от временных зон обработка времени, например, в логировании событий на сервере или синхронизации данных между разными регионами.

Метод не принимает аргументов. Он работает с объектом Date, из которого вызывается. Возвращаемое значение — целое число от 0 (полночь) до 23 (11 вечера), представляющее часы в UTC.

Важно отметить, что getUTCHours() является частью набора методов для получения компонентов даты в UTC, таких как getUTCMinutes(), getUTCSeconds() и других. Эти методы отличаются от их локальных аналогов (например, getHours()), которые возвращают значения согласно локальному времени системы пользователя.

Простые примеры использования

Создание объекта Date и получение текущего часа в UTC.

const now = new Date();
console.log(now.getUTCHours());
// Результат зависит от текущего времени в UTC.
// Например: 14

Установка конкретной даты и получение часов.

const specificDate = new Date('2023-12-25T19:30:00Z');
console.log(specificDate.getUTCHours());
19

Использование с другими методами UTC для получения полного времени.

const date = new Date('2023-06-15T08:45:30Z');
const utcHours = date.getUTCHours();
const utcMinutes = date.getUTCMinutes();
console.log(`UTC Время: ${utcHours}:${utcMinutes}`);
UTC Время: 8:45

Похожие функции в JavaScript

В JavaScript существует несколько связанных методов для работы с временем.

getHours(): возвращает часы по местному времени системы. Этот метод предпочтителен для отображения времени, соответствующего местоположению пользователя.

getUTCMinutes(), getUTCSeconds(), getUTCMilliseconds(): возвращают соответствующие компоненты времени в UTC. Их используют вместе с getUTCHours() для полного представления времени.

Date.prototype.toISOString(): возвращает строку даты в формате ISO 8601 (UTC). Этот метод удобен для сериализации и передачи дат.

Выбор между getUTCHours() и getHours() зависит от задачи. Для логирования на сервере или работы с международными данными лучше подходит UTC, а для интерфейсов пользователя — локальное время.

Типичные ошибки

Ошибки часто возникают из-за непонимания разницы между локальным временем и UTC.

Путаница с методами getHours и getUTCHours: использование не того метода может привести к неверной интерпретации времени.

const date = new Date('2023-01-01T00:00:00'); // Создано в локальной временной зоне.
console.log('Локальные часы:', date.getHours());
console.log('Часы UTC:', date.getUTCHours());
// При нахождении в часовом поясе UTC+3 результат будет:
// Локальные часы: 3
// Часы UTC: 0

Ошибки при создании объекта Date: если строка даты не имеет указателя на временную зону (например, 'Z' для UTC), JavaScript интерпретирует ее как локальное время.

const date1 = new Date('2023-01-01T12:00:00'); // Без 'Z'
const date2 = new Date('2023-01-01T12:00:00Z'); // С 'Z'
console.log(date1.getUTCHours(), date2.getUTCHours());
// Результат для UTC+3:
// 9 12

История изменений

Метод getUTCHours() присутствует в JavaScript с ранних версий ECMAScript 1 (1997 год). С тех пор его спецификация не претерпела значительных изменений в поведении. Однако с появлением стандарта ECMAScript 5 (2009) были уточнены детали работы с датами, например, обработка нечисловых значений. В современных версиях ECMAScript (ES6 и выше) метод остается стабильным и полностью поддерживается во всех браузерах и средах выполнения, таких как Node.js.

Расширенные примеры

Определение части суток в UTC.

Пример javascript
function getUTCTimeOfDay(date) {
    const hour = date.getUTCHours();
    if (hour < 6) return 'Ночь';
    if (hour < 12) return 'Утро';
    if (hour < 18) return 'День';
    return 'Вечер';
}
const now = new Date();
console.log(getUTCTimeOfDay(now));
// Например, при 14 часах UTC: День

Расчет временной разницы в часах между локальным временем и UTC.

Пример javascript
function getLocalUTCOffsetHours() {
    const now = new Date();
    const localHours = now.getHours();
    const utcHours = now.getUTCHours();
    let offset = utcHours - localHours;
    if (offset > 12) offset -= 24;
    if (offset < -12) offset += 24;
    return offset;
}
console.log(`Смещение (часы): ${getLocalUTCOffsetHours()}`);
// Для Москвы (UTC+3) результат: -3

Форматирование времени UTC с ведущими нулями.

Пример javascript
function formatUTCTime(date) {
    const hours = date.getUTCHours().toString().padStart(2, '0');
    const minutes = date.getUTCMinutes().toString().padStart(2, '0');
    return `${hours}:${minutes}`;
}
console.log(formatUTCTime(new Date('2023-07-10T05:09:00Z')));
05:09

Использование в цикле для анализа данных по часам.

Пример javascript
const events = [
    { timestamp: new Date('2023-10-01T08:00:00Z') },
    { timestamp: new Date('2023-10-01T14:00:00Z') },
    { timestamp: new Date('2023-10-01T20:00:00Z') }
];
const hoursCount = {};
events.forEach(event => {
    const hour = event.timestamp.getUTCHours();
    hoursCount[hour] = (hoursCount[hour] || 0) + 1;
});
console.log(hoursCount);
{ '8': 1, '14': 1, '20': 1 }

Аналоги в других языках программирования

Работа с временем в UTC распространена во многих языках.

PHP: Функция date() с форматом 'G' возвращает час в UTC (0-23).

echo date('G', time());
// Например: 14

Python: В модуле datetime у объекта datetime.utcnow() есть атрибут hour.

from datetime import datetime
print(datetime.utcnow().hour)
# Например: 14

MySQL: Функция UTC_TIME() возвращает текущее время UTC, из которого можно извлечь часы.

SELECT EXTRACT(HOUR FROM UTC_TIME());
+-------------------------------+
| EXTRACT(HOUR FROM UTC_TIME()) |
+-------------------------------+
|                            14 |
+-------------------------------+

C (стандартная библиотека): Используются функции gmtime() и time() для получения структуры tm с часами в UTC.

#include 
#include 
int main() {
    time_t t = time(NULL);
    struct tm *utc_time = gmtime(&t);
    printf("%d", utc_time->tm_hour);
    return 0;
}
// Например: 14

JS getUTCHours function comments

En
GetUTCHours Returns the hours in the specified date according to universal time