Класс Date в Google Apps Script: Полное руководство

Что такое класс 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);
}

Добавить комментарий