Назад Зміст

Об'єкт Date


Об'єкт Date призначений для маніпуляцій з датами та часом. Його примітивним значенням є число, що дорівнює кількості мілісекунд щодо базового часу, що дорівнює півночі 1 січня 1970 року. День складається з 86400000 мілісекунд.

Об'єкт та екземпляр об'єкта

Об'єкт - це шаблон. Примірник об'єкта – це робоча копія. Наприклад, об'єктом є комплект документації на заводі, через яку виготовляються телевізори. Сам телевізор є екземпляром цього об'єкта. Усі телевізори, які сходять з конвеєра, мають одні й самі властивості зображення й одні й самі методи управління цими властивостями.

Створення екземпляра об'єкта Date

Для створення екземпляра об'єкта використовується ключове слово new.

Створення екземпляра об'єкта з поточною датою та часом: new Date()

a = New Date();

   У змінній «а» поточна дата та час.

Створення екземпляра об'єкта з датою та часом, заданими аргументами конструктора:

new Date(рік,місяць, день [,годинник [,хвилини [,секунди [,мс]?]?]?]?]?)

Тут:

Наприклад,

c = New Date (1958, 4, 21, 10, 15);

   У змінній "c" дата - 21 травня 1958 року і час 10 годин 15 хв. Нумерація місяців починається з 0.

Методи отримання компонентів об'єкта Date

Метод це дія, яка виконується для об'єкта або з об'єктом. За своєю суттю це команда, та її дії пов'язані з певним об'єктом. Кожен об'єкт може мати багато методів.

МетодОпис
getTime()Повертає примітивне значення об'єкта.
getFullYear()Повертає номер року за місцевим часом
getMonth()Повертає місяць за місцевим часом. Нумерація місяців з 0 (0-січ, 1-лютий...)
getDate()Повертає число за місцевим часом.
getDay()Повертає день тижня за місцевим часом. Нумерація днів тижня з 0 (0-воскр, 1-понед...)
getHours()Повертає годинник за місцевим часом.
getMinutes()Повертає хвилини за місцевим часом.
getSeconds()Повертає секунди за місцевим часом.

Робота с getDay

За допомогою об'єкта Date можна також отримати номер поточного дня тижня. Робиться це за допомогою методу getDay (він повертає числа від 0 до 6-ти), причому тиждень починається з неділі і цей день має номер нуль. Понеділок - це день номер 1, вівторок - номер 2 і таке інше.

Як працює цей метод, подивимося на такому прикладі: нехай сьогодні вівторок, тоді наступний код виведе на екран число 2:

var date = new Date();
alert(date.getDay());

Давайте тепер виведемо поточний день тижня не числом, а словом (для стислості неділя буде 'вс', понеділок 'пн' і так далі).

Для цього я складу масив днів тижня days і почну його з неділі (оскільки це нульовий день):

var days = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];

Як за допомогою цього масиву вивести на екран, наприклад, "вт"? Потрібно передати у квадратних дужках номер цього дня (вівторок має номер 2):

var days = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];
alert(days[2]); //выведет 'вт'

Однак, ми не хочемо передавати день тижня вручну, а хочемо, щоб JavaScript сам визначив поточний день і вивів його назву. Для цього потрібно сумісити те, що повертає метод getDay, і наш масив days:

var date = new Date();
var day = date.getDay();
var days = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];
alert(days[day]);

Задаємо певний момент часу

Коли ми з вами створювали об'єкт Date() (у такий спосіб: new Date()) ми залишали круглі дужки порожніми. У цьому випадку ми отримували поточний момент часу.

Однак, можна вчинити і по-іншому – передати йому параметри у форматі new Date(рік, місяць, день, години, хвилини, секунди, мілісекунди) і в цьому випадку у змінну date запишеться не поточний час, а той, який ми вказали у параметрах

Особливості такого формату: відлік місяців починається з нуля, відсутні параметри, починаючи з годинника, вважаються рівними нулю, а для року, місяців і днів – одиниці.

Давайте дізнаємося день тижня (словом) за дату:

var date = new Date(2025, 10, 5, 12, 59, 59);
var day = date.getDay();
var days = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];
alert(days[day]);

Години, хвилини та секунди можна і не вказувати це ні на що не вплине:

var date = new Date(2025, 10, 5);
var day = date.getDay();
var days = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];
alert(days[day]);

Робота с getTime

Під час роботи з датою існує спеціальний формат timestamp, який у JavaScript показує кількість мілісекунд, що пройшла з 1 січня 1970 року за поточним (або заданим) моментом часу.

Існує спеціальний метод getTime, за допомогою якого можна отримати час у форматі timestamp.

Отримаємо поточний момент у цьому форматі:

var date = new Date();
alert(date.getTime());

Отримаємо заданий момент часу у цьому форматі:

var date = new Date(2015, 12, 4, 23, 59, 59);
alert(date.getTime());

Отримаємо різницю в мілісекундах між поточним та заданим моментом часу:

var now = new Date();
var date = new Date(2015, 12, 4, 23, 59, 59);
var diff = now.getTime() - date.getTime();
alert(diff);

Робота с Date.parse

Функція Date.parse приймає дату у форматі 'рік-місяць-деньTгодини:хвилини:секунди' та повертає відповідну їй timestamp(кількість мілісекунд, що пройшли з півночі 1 січня 1970 до заданого моменту часу).

Давайте виведемо кількість мілісекунд,які пройшли з 1 січня 1970 року до 25 травня 2015, 12:59:59:

document.write(Date.parse('2015-05-25T12:59:59'));

Результат виконання коду:

1432547999000

Різниця між датами

Дати, представлені у вигляді об'єкта Date, можна віднімати один з одного, результат їх віднімання – різниця у мілісекундах.

Давайте виведемо кількість мілісекунд, які пройшли з 25 травня 2015, 12:59:59 на даний момент часу:

var now = new Date();
var date = new Date(2015, 23, 4, 12, 59, 59);
var diff = now - date;
document.write(diff);

Приклад 1

Виведемо у вікно номер поточного року.

У цьому скрипті створюється екземпляр об'єкта Date. Він має назву today та містить поточну дату.

Для застосування методу getFullYear() до об'єкта today використовується конструкція today.getFullYear(). Вона повертає значення року із цієї дати.

Це значення присвоюється змінної god і виводиться на консоль.

Приклад 2

Виведемо у вікно назву дня тижня для дати 21 травня 1958 року.

У цьому скрипті створюється екземпляр об'єкта Date. Він має ім'я dr та містить дату 21 травня 1958 року.

Для застосування методу getDay() до об'єкта dr використовується конструкція dr.getDay(). Вона повертає значення номера дня тижня цієї дати.

Це значення присвоюється змінної dn і буде використовуватися як індекс у масиві назв днів тижня.

Створюється масив dnn, що містить назви днів тижня.

Відповідний елемент цього масиву виводиться на консоль.

Автовиправлення дати

Автовиправлення – дуже зручна властивість об'єктів Date. Воно полягає в тому, що можна встановлювати наперед некоректні компоненти, а об'єкт сам себе поправить.

Наприклад, для 32 січня:

Отримаємо 1 лютого:

Неправильні компоненти дати автоматично розподіляються на інші компоненти

Наприклад, потрібно збільшити на 2 дні дату «28 лютого 2011 року». Можливо так, що це буде 2 березня, а можливо 1 березня, якщо рік високосний. Але нам про все це думати не треба. Просто додаємо два дні. Решта зробить Date:

Отримаємо 2 березня.

Можна встановити і нульові, і навіть негативні компоненти.

Якщо встановити нульове число місяця, отримаємо останнє число попереднього місяця.

Якщо встановити -1 (мінус 1) число місяця, отримаємо передостаннє число попереднього місяця.

Приклад 3

Створити сторінку, яка під час завантаження виводить у вікно дату останнього дня поточного місяця у вигляді: число, назва місяця, рік та назва дня тижня. Номер поточного року та поточного місяця вибирати з поточної дати.

Останнє число місяця може бути 28, 29, 30 або 31 залежно від номера місяця і від того, чи рік є високосним чи ні. Але ми про це не думатимемо.

Створимо дату з наступного місяця, але день не перший, а «нульовий» (тобто попередній першому). Внаслідок автовиправлення дати отримаємо попередній день для 1 числа наступного місяця. Тобто останнє число цього місяця.

Приклад 4

Створити HTML-сторінку, яка під час завантаження повідомляє, скільки днів минуло від початку року.

Для вирішення завдання необхідно визначити: