![]() |
|
||||||||||||||
|
|
|
|
Для работы с датой и временем в 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 обладает рядом очень полезных методов, позволяющих работать с отдельными компонентами даты-времени, а так же проводить проверку коррестности и правильный вывод даты в заданном формате.
Так же объект 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). Следование этим правилам избавит вас от большинства логических багов и недочётов, а значит сделает ваш код более стабильным и качественным. |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Спасибо, что заглянули на сайт. Надеюсь, Вам понравилось. Заходите еще. Здесь всегда рады вам :) |
|
© 2005-2012 |
E-mail: |