GetUTCDate: примеры (JAVASCRIPT)
getUTCDate: numberОсновные сведения о getUTCDate
Метод getUTCDate() принадлежит объекту Date в JavaScript. Он возвращает целое число от 1 до 31, представляющее день месяца для указанной даты по Всемирному координированному времени (UTC).
Функция не принимает аргументов. Её вызов производится на экземпляре объекта Date. Возвращаемое значение всегда является числом (integer). Использование метода актуально в ситуациях, когда необходима независимость от локального часового пояса пользователя, например, при логировании временных меток на сервере, синхронизации времени между разными регионами или в международных веб-приложениях.
Краткие примеры
Пример с текущей датой:
const now = new Date();
console.log(now.getUTCDate());// Результат зависит от текущего дня (например, 17)
Пример с конкретной датой:
const specDate = new Date('2024-01-15T12:00:00Z');
console.log(specDate.getUTCDate());// 15
Пример, показывающий разницу с локальным временем:
// Создаем дату для 31 декабря 23:30 по Токио (UTC+9)
const dateTokyo = new Date('2023-12-31T23:30:00+09:00');
console.log('Локальный день (getDate):', dateTokyo.getDate());
console.log('UTC день (getUTCDate):', dateTokyo.getUTCDate());// Локальный день (getDate): 31 // UTC день (getUTCDate): 30
Похожие методы в JavaScript
getDate() - возвращает день месяца по местному времени. Следует применять, когда отображение даты должно соответствовать часовому поясу пользователя.
getUTCDay() - возвращает день недели (0-6) по UTC. Используется для получения дня недели, независимого от локали.
getUTCFullYear(), getUTCMonth() - методы для получения других компонентов даты (год, месяц) в формате UTC. Целесообразно применять в связке с getUTCDate() для полного представления даты по UTC.
Распространенные ошибки
Ошибка 1: Вызов метода на не Date-объекте.
const notDate = '2024-01-01';
console.log(notDate.getUTCDate());// TypeError: notDate.getUTCDate is not a function
Ошибка 2: Непонимание разницы между UTC и локальным временем, ведущее к логическим ошибкам в расчетах.
// Пользователь в Нью-Йорке (UTC-5) создает дату 1 января 00:30.
const localNY = new Date(2024, 0, 1, 0, 30);
console.log(localNY.getDate()); // 1
console.log(localNY.getUTCDate()); // 31 (предыдущий день)1 31
Ошибка 3: Ожидание, что метод возвращает строку или объект.
const d = new Date();
const result = d.getUTCDate();
console.log(typeof result); // 'number', не 'string'number
История изменений
Метод getUTCDate() был стандартизирован в ECMAScript 1 (1997 год) и с тех пор его поведение остается стабильным. В современных стандартах (ECMAScript 2023) не было внесено значимых изменений в его работу.
Расширенные примеры использования
Пример 1: Форматирование полной даты в формате ISO 8601 (только дата) с использованием UTC.
function formatUTCToISODate(date) {
const year = date.getUTCFullYear();
const month = (date.getUTCMonth() + 1).toString().padStart(2, '0');
const day = date.getUTCDate().toString().padStart(2, '0');
return `${year}-${month}-${day}`;
}
const myDate = new Date('2024-12-05T22:00:00Z');
console.log(formatUTCToISODate(myDate));2024-12-05
Пример 2: Определение последнего дня месяца по UTC.
function getLastUTCDayOfMonth(year, month) {
// month от 0 (январь) до 11 (декабрь)
const date = new Date(Date.UTC(year, month + 1, 0));
return date.getUTCDate();
}
console.log(getLastUTCDayOfMonth(2023, 1)); // Февраль 202328
Пример 3: Вычисление интервала между двумя датами в днях по UTC (игнорируя время).
function daysDifferenceUTC(date1, date2) {
const utc1 = Date.UTC(date1.getUTCFullYear(), date1.getUTCMonth(), date1.getUTCDate());
const utc2 = Date.UTC(date2.getUTCFullYear(), date2.getUTCMonth(), date2.getUTCDate());
return Math.floor((utc2 - utc1) / (1000 * 60 * 60 * 24));
}
const start = new Date('2024-01-01T23:59:59Z');
const end = new Date('2024-01-03T00:00:01Z');
console.log(daysDifferenceUTC(start, end));2
Пример 4: Итерация по дням определенного месяца по UTC.
function listUTCDaysInMonth(year, month) {
const days = [];
const firstDay = new Date(Date.UTC(year, month, 1));
const lastDay = new Date(Date.UTC(year, month + 1, 0));
for (let d = new Date(firstDay); d <= lastDay; d.setUTCDate(d.getUTCDate() + 1)) {
days.push(new Date(d).toISOString().slice(0, 10));
}
return days;
}
console.log(listUTCDaysInMonth(2024, 0)); // Январь 2024['2024-01-01', '2024-01-02', ... , '2024-01-31']
Аналоги в других языках
PHP: Функция gmdate() с форматом 'j'.
echo gmdate('j'); // День месяца по UTC
// Или для конкретной метки времени:
$timestamp = strtotime('2024-01-15');
echo gmdate('j', $timestamp);15
Python: Атрибут day объекта datetime, полученного через datetime.utcnow().
from datetime import datetime
utc_date = datetime.utcnow()
print(utc_date.day)17
MySQL: Функция DAY(UTC_DATE()).
SELECT DAY(UTC_DATE());17
C (стандартная библиотека time.h):
#include
#include
int main() {
time_t t = time(NULL);
struct tm *gtm = gmtime(&t);
printf("%d\n", gtm->tm_mday);
return 0;
} 17