Поиск публикаций
Дата и Время
Содержание
Текущее время в разных часовых поясах
дата.сейчас([часовойПояс])
Возвращает объект даты/времени для текущего момента в указанном часовом поясе. Если пояс не указан — возвращает UTC.
₽времяUtc = дата.сейчас(); ₽времяМосква = дата.сейчас("Москва"); лог("UTC: " + ₽времяUtc.формат("yyyy-MM-dd HH:mm:ss"));
Преобразование строки в дату
дата.изСтроки(строка, формат [, часовойПояс])
Создаёт объект даты из строки по указанному формату. Можно указать часовой пояс, в котором интерпретируется исходная строка (по умолчанию UTC).
₽дата = дата.изСтроки("2026-12-31T23:59:59Z", "iso"); ₽датаМосква = дата.изСтроки("2025-01-15 12:30:45", "yyyy-MM-dd HH:mm:ss", "Москва");
Арифметика с датами
Объект даты поддерживает методы для добавления и вычитания временных интервалов.
дата.добавитьДни(количество)
дата.добавитьЧасы(количество)
дата.добавитьМесяцы(количество)
дата.добавитьГоды(количество)
Возвращают новый объект даты, изменённый на указанное количество единиц (положительное — вперёд, отрицательное — назад).
дата.разницаСекунд(другаяДата)
Возвращает разницу в секундах между текущей датой и другой датой (текущая − другая).
₽сейчас = дата.сейчас("Москва"); ₽завтра = ₽сейчас.добавитьДни(1); ₽часНазад = ₽сейчас.добавитьЧасы(-1);
Преобразование между часовыми поясами
дата.вЧасовомПоясе(новыйПояс)
Возвращает новый объект даты, представляющий тот же момент времени, но в другом часовом поясе.
₽исходнаяДата = дата.изСтроки("2025-03-10 12:00:00", "yyyy-MM-dd HH:mm:ss", "Москва"); ₽времяUtc = ₽исходнаяДата.вЧасовомПоясе("UTC");
Метка времени (Unix timestamp)
дата.время()
Возвращает количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC (Unix timestamp) для данного объекта даты.
дата.изМетки(метка [, часовойПояс])
Создаёт объект даты из Unix-метки времени (секунды). Пояс по умолчанию — UTC.
₽метка = дата.сейчас().время(); ₽датаИзМетки = дата.изМетки(₽метка, "Москва");
Компоненты даты
Объект даты предоставляет методы для получения отдельных полей (в текущем часовом поясе объекта):
год()– год (число)месяц()– месяц (1–12)день()– день месяца (1–31)час()– час (0–23)минута()– минуты (0–59)секунда()– секунды (0–59)деньНедели()– день недели (1 – понедельник, …, 7 – воскресенье)деньГода()– день года (1–366)високосный()–истинаесли год високосный, иначеложь
₽образец = дата.изСтроки("2024-12-25 08:30:45", "yyyy-MM-dd HH:mm:ss", "Москва"); лог("Год: " + строка(₽образец.год()));
Сравнение дат
дата.сравнить(другаяДата)
Сравнивает текущую дату с другой. Возвращает отрицательное число, если текущая дата раньше; положительное, если позже; 0 если равны.
если (₽дата1.сравнить(₽дата2) < 0) { лог("дата1 раньше"); }
Форматирование даты
дата.формат([шаблон])
Возвращает строковое представление даты по заданному шаблону. Если шаблон не указан, используется "yyyy-MM-dd HH:mm:ss".
дата.строка([шаблон])
Синоним для формат.
Поддерживаемые символы шаблона:
yyyy– год (4 цифры)yy– год (2 цифры)MM– месяц (2 цифры, 01–12)M– месяц (1–12)dd– день (2 цифры, 01–31)d– день (1–31)HH– час (0–23, 2 цифры)H– час (0–23)hh– час (0–12, 2 цифры)h– час (0–12)mm– минуты (0–59, 2 цифры)m– минуты (0–59)ss– секунды (0–59, 2 цифры)s– секунды (0–59)SSS– миллисекунды (3 цифры)
₽дата.формат("dd.MM.yyyy HH:mm"); // "25.12.2024 08:30"
Обработка ошибок
Функции модуля могут выбрасывать исключения при некорректных входных данных (неверный формат, неизвестный часовой пояс и т.п.). Их следует перехватывать конструкцией попытка...ловушка.
попытка { ₽неверная = дата.изСтроки("неправильная строка", "yyyy-MM-dd"); } ловушка (₽ошибка) { лог("Ошибка парсинга: " + строка(₽ошибка)); }
Полный тестовый скрипт
Ниже приведён полный скрипт, демонстрирующий все возможности модуля «дата».
// ============================================================ // Тест модуля дата/время (русские названия часовых поясов) // ============================================================ функция лог(₽сообщение) { вывод("[ДатаТест] " + строка(₽сообщение) + "\n"); } лог("=== 1. Текущее время в разных часовых поясах ==="); ₽времяUtc = дата.сейчас(); лог("UTC: " + ₽времяUtc.формат("yyyy-MM-dd HH:mm:ss")); лог("Москва: " + дата.сейчас("Москва").формат("yyyy-MM-dd HH:mm:ss")); лог("Нью-Йорк: " + дата.сейчас("Нью-Йорк").формат("yyyy-MM-dd HH:mm:ss")); лог("Токио: " + дата.сейчас("Токио").формат("yyyy-MM-dd HH:mm:ss")); лог("Лондон: " + дата.сейчас("Лондон").формат("yyyy-MM-dd HH:mm:ss")); лог("Екатеринбург (Челябинск): " + дата.сейчас("Екатеринбург").формат("yyyy-MM-dd HH:mm:ss")); лог("Владивосток: " + дата.сейчас("Владивосток").формат("yyyy-MM-dd HH:mm:ss")); лог("Калининград: " + дата.сейчас("Калининград").формат("yyyy-MM-dd HH:mm:ss")); лог("=== 2. Преобразование строки в дату с часовыми поясами ==="); лог("ISO строка -> UTC: " + дата.изСтроки("2026-12-31T23:59:59Z", "iso").формат()); лог("2025-01-15 12:30:45 по Москве: " + дата.изСтроки("2025-01-15 12:30:45", "yyyy-MM-dd HH:mm:ss", "Москва").формат()); лог("2024-07-20 09:15:00 по Нью-Йорку: " + дата.изСтроки("2024-07-20 09:15:00", "yyyy-MM-dd HH:mm:ss", "Нью-Йорк").формат()); лог("Без ведущих нулей (Владивосток): " + дата.изСтроки("2023-5-7 8:5:2", "yyyy-M-d H:m:s", "Владивосток").формат()); лог("=== 3. Арифметика с датами ==="); ₽сейчас = дата.сейчас("Москва"); лог("Завтра в Москве: " + ₽сейчас.добавитьДни(1).формат("yyyy-MM-dd")); лог("Через неделю: " + ₽сейчас.добавитьДни(7).формат("yyyy-MM-dd")); лог("Час назад: " + ₽сейчас.добавитьЧасы(-1).формат("yyyy-MM-dd HH:mm:ss")); лог("Разница между сейчас и через неделю (сек): " + строка(₽сейчас.разницаСекунд(₽сейчас.добавитьДни(7)))); лог("Через месяц: " + ₽сейчас.добавитьМесяцы(1).формат("yyyy-MM-dd")); лог("Через год: " + ₽сейчас.добавитьГоды(1).формат("yyyy-MM-dd")); лог("=== 4. Преобразование между часовыми поясами ==="); ₽исходнаяДата = дата.изСтроки("2025-03-10 12:00:00", "yyyy-MM-dd HH:mm:ss", "Москва"); лог("Исходная дата в Москве: " + ₽исходнаяДата.формат()); лог("Та же дата в UTC: " + ₽исходнаяДата.вЧасовомПоясе("UTC").формат()); лог("Та же дата в Нью-Йорке: " + ₽исходнаяДата.вЧасовомПоясе("Нью-Йорк").формат()); лог("Та же дата в Токио: " + ₽исходнаяДата.вЧасовомПоясе("Токио").формат()); лог("=== 5. Работа с меткой времени ==="); ₽метка = дата.сейчас().время(); лог("Текущая метка времени (сек): " + строка(₽метка)); лог("Дата из метки (UTC): " + дата.изМетки(₽метка, "UTC").формат()); лог("Дата из метки (Москва): " + дата.изМетки(₽метка, "Москва").формат()); лог("Дата из метки (Екатеринбург): " + дата.изМетки(₽метка, "Екатеринбург").формат()); лог("=== 6. Компоненты даты ==="); ₽образец = дата.изСтроки("2024-12-25 08:30:45", "yyyy-MM-dd HH:mm:ss", "Москва"); лог("Образец: " + ₽образец.формат()); лог("Год: " + строка(₽образец.год())); лог("Месяц: " + строка(₽образец.месяц())); лог("День: " + строка(₽образец.день())); лог("Час: " + строка(₽образец.час())); лог("Минута: " + строка(₽образец.минута())); лог("Секунда: " + строка(₽образец.секунда())); лог("День недели (1-пн): " + строка(₽образец.деньНедели())); лог("День года: " + строка(₽образец.деньГода())); лог("Високосный год? " + строка(₽образец.високосный())); лог("=== 7. Сравнение дат ==="); ₽ранняя = дата.изСтроки("2024-01-01 00:00:00", "yyyy-MM-dd HH:mm:ss", "UTC"); ₽поздняя = дата.изСтроки("2024-12-31 23:59:59", "yyyy-MM-dd HH:mm:ss", "UTC"); лог("Раньше < Позже: " + строка(₽ранняя.сравнить(₽поздняя))); лог("Позже > Раньше: " + строка(₽поздняя.сравнить(₽ранняя))); лог("Равно: " + строка(₽ранняя.сравнить(₽ранняя))); лог("=== 8. Тестирование ошибок ==="); попытка { дата.изСтроки("неправильная строка", "yyyy-MM-dd"); } ловушка (₽ошибка) { лог("Ожидаемая ошибка парсинга: " + строка(₽ошибка)); } попытка { дата.сейчас("Неизвестный/Город"); } ловушка (₽ошибка) { лог("Ожидаемая ошибка часового пояса: " + строка(₽ошибка)); } попытка { дата.изМетки(123, "Марс/Фобос"); } ловушка (₽ошибка) { лог("Ожидаемая ошибка при изМетки: " + строка(₽ошибка)); } лог("=== 9. Преобразование даты в строку с разными форматами ==="); ₽тестоваяДата = дата.изСтроки("2025-03-15 14:30:00", "yyyy-MM-dd HH:mm:ss", "Москва"); лог("По умолчанию: " + ₽тестоваяДата.строка()); лог("Только дата: " + ₽тестоваяДата.строка("yyyy-MM-dd")); лог("Только время: " + ₽тестоваяДата.строка("HH:mm:ss")); лог("Русский формат: " + ₽тестоваяДата.строка("dd.MM.yyyy HH:mm")); лог("=== Тест модуля дата/время успешно завершён ===");