Что такое класс Date и для чего он нужен
Класс Date в Google Apps Script предоставляет мощный инструмент для работы с датами и временем. Он позволяет создавать, изменять, форматировать и сравнивать даты, что критически важно для многих задач автоматизации и обработки данных. Например, при формировании отчетов по рекламным кампаниям, планировании задач или обработке данных о продажах.
Основные возможности класса Date для работы с датами и временем
Создание объектов даты с текущей или заданной датой и временем.
Получение отдельных компонентов даты и времени (год, месяц, день, час, минута, секунда).
Изменение даты и времени (добавление/вычитание интервалов).
Форматирование даты и времени в различные строки.
Преобразование между датами и временными метками (timestamp).
Учет часовых поясов.
Импорт и использование класса Date в Google Apps Script
Класс Date является встроенным в Google Apps Script, поэтому не требует импорта каких-либо библиотек. Просто создайте экземпляр класса, чтобы начать работу.
Создание объектов Date
Создание объекта Date с текущей датой и временем
Для создания объекта Date, представляющего текущую дату и время, используйте конструктор без аргументов:
/**
* Создает объект Date с текущей датой и временем.
* @return {Date} Объект Date, представляющий текущую дату и время.
*/
function getCurrentDate() {
const now: Date = new Date();
Logger.log(now); // Пример: Fri Oct 27 2023 10:00:00 GMT+0000 (Coordinated Universal Time)
return now;
}
Создание объекта Date с заданной датой и временем (различные форматы)
Можно создать объект Date с конкретной датой и временем, используя различные форматы:
/**
* Создает объект Date с заданной датой и временем.
* @param {number} year Год.
* @param {number} month Месяц (0-11, где 0 - январь).
* @param {number} day День месяца.
* @param {number} hour Час.
* @param {number} minute Минута.
* @param {number} second Секунда.
* @return {Date} Объект Date с заданной датой и временем.
*/
function createSpecificDate(year: number, month: number, day: number, hour: number, minute: number, second: number): Date {
const specificDate: Date = new Date(year, month, day, hour, minute, second);
Logger.log(specificDate); // Пример: Mon Oct 28 2024 10:30:45 GMT+0000 (Coordinated Universal Time)
return specificDate;
}
// Создание даты через строку
function createDateFromString() {
const dateString: string = "2024-10-28T10:30:00";
const dateFromString: Date = new Date(dateString);
Logger.log(dateFromString); // Пример: Mon Oct 28 2024 10:30:00 GMT+0000 (Coordinated Universal Time)
}
Создание объекта Date на основе временной метки (timestamp)
Временная метка (timestamp) представляет собой количество миллисекунд, прошедших с 1 января 1970 года UTC. Создать Date из timestamp можно так:
/**
* Создает объект Date на основе временной метки.
* @param {number} timestamp Временная метка (количество миллисекунд с 1 января 1970 UTC).
* @return {Date} Объект Date, представляющий дату и время, соответствующие временной метке.
*/
function createDateFromTimestamp(timestamp: number): Date {
const dateFromTimestamp: Date = new Date(timestamp);
Logger.log(dateFromTimestamp);
return dateFromTimestamp;
}
//Пример
const timestamp: number = 1666886400000; // October 27, 2022 00:00:00 UTC
createDateFromTimestamp(timestamp);Методы класса Date для получения информации о дате и времени
Получение года, месяца, дня, часа, минут, секунд и миллисекунд
function getDateComponents() {
const now: Date = new Date();
const year: number = now.getFullYear();
const month: number = now.getMonth(); // 0-11 (январь - декабрь)
const day: number = now.getDate();
const hour: number = now.getHours();
const minute: number = now.getMinutes();
const second: number = now.getSeconds();
const millisecond: number = now.getMilliseconds();
Logger.log(`Год: ${year}, Месяц: ${month}, День: ${day}, Час: ${hour}, Минута: ${minute}, Секунда: ${second}, Миллисекунда: ${millisecond}`);
}
Получение дня недели и дня года
function getDayOfWeekAndYear() {
const now: Date = new Date();
const dayOfWeek: number = now.getDay(); // 0-6 (воскресенье - суббота)
//День года нельзя получить напрямую встроенным методом.
Logger.log(`День недели: ${dayOfWeek}`);
}
Получение временной метки (timestamp)
function getTimestamp() {
const now: Date = new Date();
const timestamp: number = now.getTime();
Logger.log(`Временная метка: ${timestamp}`);
}
Работа с часовыми поясами (getTimezoneOffset)
Метод getTimezoneOffset() возвращает разницу в минутах между UTC и локальным временем. Важно учитывать это при работе с датами в разных часовых поясах.
function getTimezoneOffsetExample() {
const now: Date = new Date();
const timezoneOffset: number = now.getTimezoneOffset();
Logger.log(`Смещение часового пояса (в минутах): ${timezoneOffset}`);
}
Методы класса Date для изменения даты и времени
Установка года, месяца, дня, часа, минут, секунд и миллисекунд
Используйте методы setFullYear(), setMonth(), setDate(), setHours(), setMinutes(), setSeconds(), setMilliseconds() для изменения соответствующих компонентов даты.
Добавление и вычитание дней, месяцев, лет, часов, минут и секунд
Для добавления или вычитания интервалов времени, можно использовать комбинацию методов получения и установки компонентов даты. Например, для добавления дней:
function addDays(date: Date, days: number): Date {
date.setDate(date.getDate() + days);
return date;
}
// Пример:
let myDate: Date = new Date();
myDate = addDays(myDate, 7); // Добавить 7 дней
Logger.log(myDate);
Примеры использования методов для изменения дат
Пример добавления месяцев:
function addMonths(date: Date, months: number): Date {
date.setMonth(date.getMonth() + months);
return date;
}
let myDate2: Date = new Date();
myDate2 = addMonths(myDate2, 2);
Logger.log(myDate2);
Форматирование даты и времени
Использование Utilities.formatDate() для форматирования даты
Функция Utilities.formatDate() позволяет форматировать дату и время в строку с использованием заданной маски и часового пояса.
Создание собственных форматов даты и времени
Можно комбинировать символы форматирования для создания собственных форматов.
Примеры форматирования даты и времени для разных локалей
function formatDateExample() {
const date: Date = new Date();
const timeZone: string = Session.getTimeZone();
const formattedDate: string = Utilities.formatDate(date, timeZone, "yyyy-MM-dd HH:mm:ss");
Logger.log(formattedDate);
}