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

Метод getHours в JavaScript: полный обзор
Раздел: Дата и время, Методы
getHours: Number

Основы метода getHours()

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

Возвращаемое значение

Метод возвращает число от 0 до 23, представляющее час для указанной даты по местному времени. Если дата некорректна, возвращается NaN.

Контекст использования

Метод используется при необходимости получить компонент часа из объекта Date для форматирования времени, выполнения временных расчетов, валидации или отображения в пользовательском интерфейсе.

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

Получение часа из текущей даты и времени:

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

Получение часа из заданной даты:

const specificDate = new Date('2023-12-25T20:30:00');
console.log(specificDate.getHours());
20

Использование с объектом Date.UTC:

const utcDate = new Date(Date.UTC(2023, 11, 25, 15, 30));
console.log('По UTC:', utcDate.getUTCHours());
console.log('По локальному времени:', utcDate.getHours());
// Результат зависит от часового пояса
// Например, для GMT+3:
// По UTC: 15
// По локальному времени: 18

Похожие методы в JavaScript

getUTCHours() возвращает час по всемирному координированному времени (UTC). Используется, когда нужна независимость от локального часового пояса.

getMinutes(), getSeconds(), getMilliseconds() получают другие компоненты времени. Часто применяются вместе с getHours() для полного разбора времени.

toLocaleTimeString() возвращает строку с временем, отформатированную согласно локали. Удобен для непосредственного отображения пользователю, но не для програмных манипуляций с числом часа.

Распространенные ошибки

Ожидание 12-часового формата: Метод всегда возвращает 0-23.

const evening = new Date('2023-12-25T20:30:00');
console.log(evening.getHours()); // Не 8 PM
20

Использование без ключевого слова new: Вызов конструктора Date без new возвращает строку, у которой нет метода getHours.

const dateStr = Date();
console.log(dateStr.getHours);
undefined

Забывание, что отсчет месяцев начинается с нуля: Это относится к созданию даты, но влияет на результат getHours, если задано неправильное время.

// Декабрь - это 11, а не 12
const date = new Date(2023, 12, 25, 10); // Январь 2024
console.log(date.getHours());
10 // Но дата уже не 25 декабря 2023

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

Метод getHours() был стандартизирован в первой редакции ECMAScript (ES1) 1997 года. С тех пор его поведение оставалось стабильным. Основные изменения в спецификации касались уточнения обработки недопустимых дат (возврат NaN) и формализации алгоритмов для согласованности между движками JavaScript.

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

Определение времени суток:

Пример javascript
function getTimeOfDay(date) {
    const hour = date.getHours();
    if (hour < 6) return 'Ночь';
    if (hour < 12) return 'Утро';
    if (hour < 18) return 'День';
    return 'Вечер';
}
console.log(getTimeOfDay(new Date('2023-12-25T05:30:00')));
console.log(getTimeOfDay(new Date('2023-12-25T11:30:00')));
Ночь
Утро

Форматирование времени в 12-часовой формат с AM/PM:

Пример javascript
function format12h(date) {
    let hours = date.getHours();
    const ampm = hours >= 12 ? 'PM' : 'AM';
    hours = hours % 12;
    hours = hours ? hours : 12; // Час 0 становится 12
    return `${hours} ${ampm}`;
}
console.log(format12h(new Date('2023-12-25T00:15:00')));
console.log(format12h(new Date('2023-12-25T14:45:00')));
12 AM
2 PM

Вычисление разницы во времени в часах:

Пример javascript
function getHourDiff(date1, date2) {
    const msInHour = 1000 * 60 * 60;
    return Math.abs(date2 - date1) / msInHour;
}
const start = new Date('2023-12-25T09:00:00');
const end = new Date('2023-12-25T17:30:00');
console.log(getHourDiff(start, end));
8.5

Создание отчета по активности по часам:

Пример javascript
const activityLog = [
    new Date('2023-12-25T10:15:00'),
    new Date('2023-12-25T10:45:00'),
    new Date('2023-12-25T14:20:00'),
    new Date('2023-12-25T14:35:00')
];
const hoursCount = {};
activityLog.forEach(log => {
    const hour = log.getHours();
    hoursCount[hour] = (hoursCount[hour] || 0) + 1;
});
console.log(hoursCount);
{10: 2, 14: 2}

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

PHP: Функция date('H') или date('G') для 24-часового формата.

$hour = date('H');
echo $hour;
// Например: 14

Python: Атрибут hour у объекта datetime.

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

MySQL: Функция HOUR() извлекает час из временного значения.

SELECT HOUR('2023-12-25 20:30:00');
20

C (библиотека time.h): Поле tm_hour в структуре struct tm после разбора времени функцией localtime().

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

JS getHours function comments

En
GetHours Returns the hour (0-23) in the specified date