Object Date

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

Дата измеряется в миллисекундах, прошедших после полуночи 01 января 1970 года по Гринвичу/UTC. Один день состоит из 86,400,000 миллисекунд. Объект Date имеет диапазон от -100,000,000 до 100,000,000 дней относительно 01 января 1970 года по UTC. Объект Date поддерживает несколько UTC- методов (универсальных), а также методы работы с локальным временем. UTC, известное также как Greenwich Mean Time (GMT)/время по Гринвичу, ссылается на время, установленное стандартом World Time Standard. Локальное время это время, известное компьютеру, на котором выполняется JavaScript.
Даты до 1970 года недопустимы.

Создание переменной типа Date() происходит традиционно при помощи оператора new:

var now = new Date();

Если Вы не задаёте никаких аргументов, конструктор создаёт объект Date для текущей даты и времени в соответствии с локальным/системным временем. Существуют еще два варианта использования конструктора Date():

var now = new Date(dateValue);

В этом случае созданный объект Date будет инициализирован нужной датой, переданной конструктору. Если Вы задаёте несколько аргументов, но не все, отсутствующие аргументы устанавливаются в 0. DateValue может иметь числовой или строковый тип данных. Если аргумент dateValue имеет числовой тип, он указывает количество миллисекунд между необходимой датой и полночью 1 января 1970 года. Если аргумент dateValue имеет строковый тип, он указывает необходимые дату и время в следующем формате: "Jan 5, 1996 08:47:00". Кроме того, действуют следующие правила записи:

сокращенная форма записи даты производится при помощи разделителя "/" или "-" в формате "месяц/день/год", например: "03/09/2004" или "03-09-2004". время может быть записано в 24 или 12 часовом формате. Например, следующие записи эквивалентны: "02:30 PM" и "14:30". А следующая запись вызовет ошибку: "14:30 PM" Следующий способ использования конструктора объекта Date является намного более простым и понятным:

var now = new Date(year, month, date[, hour[, min[, sec[, msec]]]]);

где

year - год 
month - месяц 
date - дата (число) 
hour - часы (необязательно) 
min - минуты (необязательно) 
sec - секунды (необязательно) 
msec - миллисекунды (необязательно)

Ниже приводятся несколько примеров использования конструктора Date:

var d1 = new Date(); // текущие дата и время 

var d2 = new Date("03/09/2004"); // полночь 9 мая 2004 года 
var d3 = new Date("03/09/2004 13:30"); // 13:30 9 мая 2004 года 

var d4 = new Date(2004, 3, 9); // полночь 9 мая 2004 года 
var d5 = new Date(2004, 3, 9, 13, 30); // 13:30 9 мая 2004 года

Пример. Вывод локального и UTC времени.

Время между клиентом и сервером нужно всегда передавать в UTC.

Под локальным временем подразумевается системное время вашего компьютера. Различия с UTC возникает если у вас например, Восточноевропейское время (Eastern European Time) EET, которое эквивалентно часовому поясу UTC+2.

  • Скрипт выводит в первой строчке локальной время, во второй UTC.
    <script>
    var d = new Date();
    var gmtHours = -d.getTimezoneOffset()/60;
    var p = d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + ' '+
    d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds()+' '+'GMT '+gmtHours;
     
    alert(d+'\n'+p);
    </script>

    Результат:

    Sat Jan 14 2012 20:49:16 GMT+0200 (EET)
    2012-1-14 18:49:16 GMT 2

Запись даты и времени вида "2012-1-14 18:49:16" соответствует международному стандарту ISO 8601.

  • Возвращают текущее время (UTC) соответственно в часах, в минутах и в секундах.
    <body>
    <script type="text/javascript">
    var t = new Date();
    document.write(t.getUTCHours() + ':' + t.getUTCMinutes() + ':' + t.getUTCSeconds());
    </script>
    </body>

    Результат: 17.5.13

Пример. В какой день вы родились?

У пользователя запрашивается дата в формате 'месяц/день/год'. Полученная строка используется для инициализации объекта Date нужной датой. Когда нужная дата установлена, воспользуемся методом getDay() для получения номера дня недели и используем его для получения дня недели из массива days.

<html>
    <head>
    </head>
    <body>
	<script type="text/javascript">
		var days = new Array ("воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота");
		var dateStr = prompt("Введите дату в формате 'месяц/день/год':", "12/31/2000");
		var d = new Date(dateStr);
		alert ("Интересующий вас день - "+days[d.getDay()]);
	</script>
    </body>
</html>

Пример. Преобразовать текущую дату в формат "yy-mm-dd"

<script type="text/javascript">
                var dn = new Date();
                var m= dn.getUTCMonth() + 1;
                var m10 = (m>1 && m<10) ? '0'+m : m;
                var d= dn.getUTCDate();
                var d10 = (d>1 && d<10) ? '0'+d : d;
                var d1now = dn.getUTCFullYear() + '-' + m10 + '-' + d10;
                alert(d1now);
</script>
PQ VPS сервера в 28+ странах.