TypeScript - Date Object: A Beginner's Guide

Привет, будущая звезда программирования! Сегодня мы отправимся в увлекательное путешествие в мир дат в TypeScript. Не волнуйтесь, если вы никогда раньше не писали ни строчки кода - я буду вашим доброжелательным проводником, и мы будем двигаться шаг за шагом. К концу этого руководства вы будете работать с датами, как профи!

TypeScript - Date Object

Что такое объект Date?

Прежде чем углубиться в детали, давайте поговорим о том, что такое объект Date. В TypeScript (и JavaScript) объект Date представляет собой один момент времени. Это как снимок определенной даты и времени, который мы можем manipулировать и использовать в наших программах.

Представьте это как цифровые часы, которые вы можете установить на любое время, прошлое, настоящее или будущее. Круто, правда?

Синтаксис: Создание объекта Date

Теперь давайте посмотрим, как мы можем создать объект Date в TypeScript. Существует несколько способов сделать это, и я покажу вам каждый из них с примерами.

1. Текущая дата и время

Чтобы создать объект Date с текущей датой и временем, вы просто используете конструктор new Date() без аргументов.

let currentDate = new Date();
console.log(currentDate);

Если вы выполните этот код, вы увидите что-то вроде:

2023-06-15T12:30:45.678Z

Это может показаться немного пугающим, но не волнуйтесь! Это просто показывает вам текущую дату и время в стандартизированном формате.

2. Specified Date and Time

Вы также можете создать объект Date для определенной даты и времени. Существует несколько способов сделать это:

a. Используя строку даты

let christmas = new Date("December 25, 2023 00:00:00");
console.log(christmas);

Это выведет:

2023-12-25T00:00:00.000Z

b. Используя отдельные параметры

let newYear = new Date(2024, 0, 1, 0, 0, 0);
console.log(newYear);

Это выведет:

2024-01-01T00:00:00.000Z

Обратите внимание, что месяц равен 0 для января. В JavaScript и TypeScript месяца нумеруются с нуля, то есть январь - это 0, февраль - 1 и так далее. Это особенность, которая часто сбивает с толку начинающих, так что имейте это в виду!

c. Используя миллисекунды с эпохи

Вы также можете создать дату, указав количество миллисекунд с 1 января 1970 года (известного как "эпоха"):

let someDate = new Date(1687012345678);
console.log(someDate);

Это выведет дату и время, соответствующие этому количеству миллисекунд после эпохи.

Работа с объектами Date

Теперь, когда мы знаем, как создавать объекты Date, давайте посмотрим на некоторые вещи, которые мы можем с ними делать.

Получение компонентов даты

Объекты Date имеют несколько методов для получения различных компонентов даты:

let today = new Date();

console.log("Full Year:", today.getFullYear());
console.log("Month:", today.getMonth());
console.log("Date:", today.getDate());
console.log("Day:", today.getDay());
console.log("Hours:", today.getHours());
console.log("Minutes:", today.getMinutes());
console.log("Seconds:", today.getSeconds());

Это может вывести что-то вроде:

Full Year: 2023
Month: 5
Date: 15
Day: 4
Hours: 12
Minutes: 45
Seconds: 30

Remember, getMonth() returns a zero-indexed month, so 5 means June!

Установка компонентов даты

Так же, как мы можем получить компоненты даты, мы можем их также устанавливать:

let futureDate = new Date();

futureDate.setFullYear(2025);
futureDate.setMonth(11);  // December
futureDate.setDate(31);
futureDate.setHours(23);
futureDate.setMinutes(59);
futureDate.setSeconds(59);

console.log(futureDate);

Это установит дату на 31 декабря 2025 года в 23:59:59.

Форматирование дат

TypeScript (и JavaScript) предоставляют некоторые встроенные методы для форматирования дат:

let event = new Date("July 4, 2023 12:00:00");

console.log(event.toDateString());
console.log(event.toTimeString());
console.log(event.toLocaleDateString());
console.log(event.toLocaleTimeString());
console.log(event.toISOString());

Это выведет:

Tue Jul 04 2023
12:00:00 GMT+0000 (Coordinated Universal Time)
7/4/2023
12:00:00 PM
2023-07-04T12:00:00.000Z

Арифметика с датами

Одна из coolest вещей о объектах Date заключается в том, что мы можем выполнять с ними математику! Давайте рассмотрим несколько примеров:

Добавление дней

let today = new Date();
let nextWeek = new Date(today.getTime() + 7 * 24 * 60 * 60 * 1000);

console.log("Today:", today);
console.log("Next week:", nextWeek);

Это добавляет 7 дней к текущей дате. Мы умножаем 7 (дней) на 24 (часы) на 60 (минуты) на 60 (секунды) на 1000 (миллисекунды), чтобы получить количество миллисекунд в неделе.

Вычитание дат

Мы также можем найти разницу между двумя датами:

let start = new Date("March 1, 2023");
let end = new Date("June 15, 2023");

let difference = end.getTime() - start.getTime();
let days = Math.floor(difference / (24 * 60 * 60 * 1000));

console.log(`There are ${days} days between ${start.toDateString()} and ${end.toDateString()}`);

Это calculates the number of days between March 1, 2023, and June 15, 2023.

Заключение

Поздравления! Вы только что сделали свои первые шаги в мир объектов Date в TypeScript. Мы рассмотрели создание дат, получение и установку компонентов даты, форматирование дат и даже арифметику с датами.

Remember, working with dates can sometimes be tricky, especially when dealing with different time zones or daylight saving time. But with practice, you'll become more comfortable and proficient.

Here's a table summarizing the main methods we've covered:

Method Description
new Date() Creates a new Date object
getFullYear() Gets the year (4 digits)
getMonth() Gets the month (0-11)
getDate() Gets the day of the month (1-31)
getDay() Gets the day of the week (0-6)
getHours() Gets the hour (0-23)
getMinutes() Gets the minutes (0-59)
getSeconds() Gets the seconds (0-59)
setFullYear() Sets the year
setMonth() Sets the month
setDate() Sets the day of the month
setHours() Sets the hour
setMinutes() Sets the minutes
setSeconds() Sets the seconds
toDateString() Returns the date portion as a human-readable string
toTimeString() Returns the time portion as a human-readable string
toLocaleDateString() Returns the date portion using locale conventions
toLocaleTimeString() Returns the time portion using locale conventions
toISOString() Returns the date in ISO format

Keep practicing, keep coding, and most importantly, have fun! The world of programming is full of exciting possibilities, and mastering dates is just the beginning. Happy coding!

Credits: Image by storyset