Курс навчання JavaScript: Дата і час


Автор: Артем'єв Сергій Ігорович ICQ: 438856621 email: [email protected]

Для роботи з датою і часом в JavaScript існує спеціальний об'єкт - Date. Цей об'єкт підтримується практично всім версіями JavaScript, а зачит їм можна користуватися не озираючись на проблеми сумісності.

Дата і час в об'єкті Date зберігаються не в явному вигляді, а як і в більшості мов програмування - у вигляді кількості мілісекунд, що пройшли з дня народження Unix, тобто з 0 годин 0 хвилин 1 січня 1970 року. Відмітна особливість об'єкта Date - все діапазонні значення мають індекси, що починаються з нуля. Це означає, що січень буде мати індекс 0 (місяць №0), а грудень буде не дванадцятим, а одинадцятим місяцем. Те ж саме справедливо і для днів тижня, годин, хвилин і ін.

Створити об'єкт Date дуже просто:

// поточна дата-час var date = new Date (); // дата-час з рядка або числа var date = new Date (дата); // дата-час з окремих значень var date = new Date (рік, місяць, день, година, хвилина, секунда, мілісекунда);

Об'єкт Date має низку дуже корисних методів, що дозволяють працювати з окремими компонентами дати-часу, а так само проводити перевірку коррестності і правильний висновок дати в заданому форматі.

Методи отримання компонентів дати-часу getFullYear Повертає рік (наприклад, 2011). getYear Повертає рік. Призначення методу getYear аналогічно призначенню getFullYear, проте даний метод є застарілим і не рекомендуються до використання, тому що результати його роботи не однозначні: для діапазону дат від 1900 до 1999 року метод повертає номер року в столітті (двозначний, наприклад 77), а для дат за межами цього діапазону - повертається повне значення (чотиризначне, наприклад 2009). getMonth Повертає місяць. getDate Повертає день місяця (число у місяці). getHours Повертає годину. getMinutes Повертає хвилину. getSeconds Повертає секунду. getMilliseconds Повертає мілісекунди. getDay Повертає номер деня тижні. getTime Повертає мілісекунди зміщення, збережене об'єктом. Методи зміни компонентів дати-часу setFullYear Встановлює рік. setYear Встановлює рік. Призначення методу setYear аналогічно призначенню setFullYear, проте даний метод є застарілим і не рекомендуються до використання (так само як і метод getYear). setMonth Встановлює місяць. setDate Встановлює дату в місяці (день місяця). setHours Встановлює годину. setMinutes Встановлює хвилину. setSeconds Встановлює секунду. setMilliseconds Встановлює мілісекунди. setTime Встановлює мілісекунди зміщення щодо 00:00:00 01.01.1970 фунцию форматування і виведення дати-часу toString Повертає строкове представлення дати і часу. toUTCString Повертає строкове представлення дати і часу з перерахунком на час UTC. Формат повертається рядка враховує всі інтернет-стандарти. toGMTString Повертає строкове представлення дати і часу з перерахунком на час GMT (час за Гринвічем). Формат повертається рядка враховує всі інтернет-стандарти. toLocaleString Аналог toString, але повертає строкове представлення дати і часу, відформатований відповідно до настройками локалізації даного користувача. toTimeString Повертає строкове представлення часу (рядок містить тільки час). toDateString Повертає строкове представлення дати (рядок містить тільки дату). toLocaleTimeString Аналог toTimeString, але повертає строкове представлення часу, відформатований відповідно до настройками локалізації користувача. toLocaleDateString Аналог toDateString, але повертає строкове представлення дати, відформатований відповідно до настройками локалізації користувача. Додаткові функції getTimezoneOffset Повертає зсув локального часу на комп'ютері користувача щодо часу UTC. Зсув повертається в хвилинах. parse Функція дозволяє перевірити коректність дати-часу, записаних у вигляді рядка. Якщо рядок коректна - відразу буде створений об'єкт Date.

Так само об'єкт Date містить ряд методів для роботи з UTC-датами. Ці функції повністю аналогічні вже розглянутих, але містять в імені префікс "UTC" і працюють тільки з "універсальним" часом: getUTCSeconds, setUTCFullYear і т.д.

Розглянемо приклад роботи з датами:

<Script type = "text / javascript"> var tmp = new Date (now.getTime ()); var arrNames = new Array ( 'Сегодня', 'Завтра', 'Через 1 рік 6 місяців 15 днів'); var arrNormal = new Array (); var arrLocal = new Array (); var arrUTC = new Array (); // зараз arrLocal [0] = tmp.toLocaleString (); arrNormal [0] = tmp.toString (); arrUTC [0] = tmp.toUTCString (); // завтра tmp.setDate (tmp.getDate () + 1); arrLocal [1] = tmp.toLocaleString (); arrNormal [1] = tmp.toString (); arrUTC [1] = tmp.toUTCString (); // через 1 рік 6 місяців 15 днів tmp.setFullYear (tmp.getFullYear () + 1); tmp.setMonth (tmp.getMonth () + 6); tmp.setDate (tmp.getDate () + 15); arrLocal [2] = tmp.toLocaleString (); arrNormal [2] = tmp.toString (); arrUTC [2] = tmp.toUTCString (); // виводимо результати в таблицю document.write ( '<table border = "0"> <tr>' + '<td> Дата </ td>' + '<td> Локалізована </ td>' + '<td> Чи не локалізована </ td> '+' <td> UTC </ td> </ tr> '); for (i = 0; i <3; i ++) {document.write ( '<tr>' + '<td>' + arrNames [i] + '</ td> +' <td> '+ arrLocal [i] + '</ td> +' <td> '+ arrNormal [i] +' </ td> + '<td>' + arrUTC [i] + '</ td> +' </ tr> '); } Document.write ( '</ table>'); </ Script>

А ось результат роботи цього скрипта:


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

1. По можливості користуватися UTC або GMT-форматами. Особливо це важливо при создани розподілених рішень (наприклад, клієнтів платіжних систем). Використання загального опорного часу дасть вам гарантії (нехай і не стовідсоткові), що і ви і ваш віддалений партнер будете однаково інтерпретувати ці дані.

2. Локалізовані дату і час має сенс використовувати тільки при виведенні їх користувачеві. У всіх інших випадках від локалізованих даних краще відмовитися.

3. Якщо все ж доводиться використовувати локальні дату і час - не забувайте враховувати зміщення локального часу щодо опорного (UTC або GMT).

Дотримання цих правил позбавить вас від більшості логічних багів і недоліків, а значить зробить ваш код більш стабільним і якісним.



На початок сторінки



На початок сторінки

Дополнительная информация

rss
Карта