Немного о компьютере

TempusJS — работаем с датой в javascript. JavaScript Получить текущее время и дату Js получить текущую дату и время


Для работы с датой и временем в 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 и т.д.

Рассмотрим пример работы с датами:

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 = tmp.toLocaleString(); arrNormal = tmp.toString(); arrUTC = tmp.toUTCString(); // завтра tmp.setDate(tmp.getDate() + 1); arrLocal = tmp.toLocaleString(); arrNormal = tmp.toString(); arrUTC = tmp.toUTCString(); // через 1 год 6 месяцев 15 дней tmp.setFullYear(tmp.getFullYear() + 1); tmp.setMonth(tmp.getMonth() + 6); tmp.setDate(tmp.getDate() + 15); arrLocal = tmp.toLocaleString(); arrNormal = tmp.toString(); arrUTC = tmp.toUTCString(); // выводим результаты в таблицу document.write("

" + "" + "" + "" + ""); for (i = 0; i < 3; i++) { document.write("" + " + " + " + " + ""); } document.write("
ДатаЛокализованнаяНе локализованнаяUTC
" + arrNames[i] + "" + arrLocal[i] + "" + arrNormal[i] + "" + arrUTC[i] + "
");

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


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

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

2. Локализованные дату и время имеет смысл использовать только при выводе их пользователю. Во всех остальных случаях от локализованных данных лучше отказаться.

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

Следование этим правилам избавит вас от большинства логических багов и недочётов, а значит сделает ваш код более стабильным и качественным.

Дата и время являются частью нашей повседневной жизни и поэтому занимают видное место в программировании. В JavaScript при создании веб-сайта может потребоваться добавить календарь, расписание поездов или интерфейс для планирования встреч. Эти приложения должны показывать соответствующие моменты времени в зависимости от текущего часового пояса пользователя или выполнять вычисления, связанные с прибытием и вылетом самолета или временем начала и окончания какого-либо события. Кроме того, вам может потребоваться использовать JavaScript для отправки ежедневных отчетов в определенное время или для фильтрации (например, для поиска открытых в определенное время ресторанов).

Объект Date

Date – это встроенный объект JavaScript, который хранит дату и время. Он предоставляет ряд встроенных методов для форматирования и управления этими данными.

По умолчанию новый экземпляр Date без аргументов создает объект с текущей датой и временем в соответствии с системными настройками текущего компьютера.

Для примера попробуйте присвоить переменной текущую дату. Создайте файл now.js.

// Set variable to current date and time
const now = new Date();
// View the output
now;
Wed Oct 18 2017 12:41:34 GMT+0000 (UTC)

В выводе получается строка с датой, которая содержит следующие данные:

Дата и время разбиваются и отображаются удобным для восприятия образом.

Однако JavaScript воспринимает дату, исходя из временной метки Unix-времени, которая представляет собой значение, состоящее из количества миллисекунд, прошедших с полуночи 1 января 1970 года. Получить метку времени можно с помощью метода getTime().

// Get the current timestamp
now.getTime();
1508330494000

Большое число, которое появляется в выводе в качестве текущей временной метки, представляет собой количество миллисекунд, прошедших с полуночи 1 января 1970 года на 18 октября 2017 года.

Нулевое время (или epoch time) представлено строкой даты 01 January, 1970 00:00:00 Universal Time (UTC) и временной меткой 0. Вы можете проверить это в браузере, создав в файле epoch.js новую переменную и присвоив ей новый экземпляр Date, основанный на отметке времени 0.

// Assign the timestamp 0 to a new variable
const epochTime = new Date(0);
epochTime;
01 January, 1970 00:00:00 Universal Time (UTC)

Нулевое время было выбрано в качестве стандарта для измерения времени компьютерами, и этот метод используется в JavaScript. Важно понимать временные метки и строки дат, поскольку эти понятия могут использоваться в зависимости от настроек и цели приложения.

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

Чтобы продемонстрировать различные способы ссылок на конкретную дату, попробуйте создать новые объекты Date, которые будут представлять 4 июля 1776 года, 12:30 по Гринвичу тремя различными способами.

// Timestamp method
new Date(-6106015800000);
// Date string method
new Date("January 31 1980 12:30");
// Date and time method
new Date(1776, 6, 4, 12, 30, 0, 0);

Все эти примеры представляют одну и ту же информацию о дате и времени тремя разными способами.

Как видите, метод временной метки имеет отрицательное число; любая дата до нулевого времени будет представлена как отрицательное число.

В третьем примере секунды и миллисекунды представлены 0. Если при создании объекта Date вам не хватает каких-либо данных, вы должны присвоить им 0. Отсутствующие данные нельзя пропускать, поскольку порядок данных о времени в строке не меняется. Также следует отметить, что месяц июль здесь обозначен как 6, а не как 7. Это происходит потому, что отсчет начинается не с 1, а с 0. Подробнее об этом – в следующем разделе.

Извлечение даты с помощью get

Имея дату, вы можете получить доступ ко всем ее компонентам с помощью различных встроенных методов. Методы возвращают каждую часть даты относительно локального часового пояса. Каждый из этих методов начинается с get и возвращает относительное число. Ниже приведена подробная таблица методов get для объекта Date.

Дата/Время Метод Диапазон Пример
Год getFullYear() YYYY 1970
Месяц getMonth() 0-11 0 = January
День месяца getDate() 1-31 1 = 1st of the month
День недели getDay() 0-6 0 = Sunday
Час getHours() 0-23 0 = midnight
Минута getMinutes() 0-59
Секунда getSeconds() 0-59
Миллисекунда getMilliseconds() 0-999
Временная метка getTime()

// Initialize a new birthday instance
const birthday = new Date(1980, 6, 31);

Теперь можно использовать все методы для извлечения каждого компонента даты.

birthday.getFullYear(); // 1980
birthday.getMonth(); // 6
birthday.getDate(); // 31
birthday.getDay(); // 4
birthday.getHours(); // 0
birthday.getMinutes(); // 0
birthday.getSeconds(); // 0
birthday.getMilliseconds(); // 0
birthday.getTime(); // 333849600000 (for GMT)

Иногда бывает необходимо извлечь только часть даты, и встроенные методы get помогут вам в этом.

Например, можно сравнить текущую дату с датой 3 октября, чтобы узнать, 3 октября сейчас или нет.

// Get today"s date
const today = new Date();
// Compare today with October 3rd
if (today.getDate() === 3 && today.getMonth() === 9) {
console.log("It"s October 3rd.");
} else {
console.log("It"s not October 3rd.");
}
It"s not October 3rd.

Встроенные методы get позволяют получать доступ к компонентам даты.

Изменение даты с помощью set

Для всех перечисленных выше методов get существует соответствующий метод set. Если get используется для извлечения определенного компонента даты, set используется для изменения этих компонентов. Ниже приведена подробная таблица методов set для объекта Date.

Дата/Время Метод Диапазон Пример
Год setFullYear() YYYY 1970
Месяц setMonth() 0-11 0 = January
День месяца setDate() 1-31 1 = 1st of the month
День недели setDay() 0-6 0 = Sunday
Час setHours() 0-23 0 = midnight
Минута setMinutes() 0-59
Секунда setSeconds() 0-59
Миллисекунда setMilliseconds() 0-999
Временная метка setTime() Количество миллисекунд с нулевого времени

Эти методы set можно использовать для изменения одного или нескольких компонентов даты. Например, можно изменить год в переменной birthday на 1997.

// Change year of birthday date
birthday.setFullYear(1997);
birthday;
Thu Jul 31 1997 00:00:00 GMT+0000 (UTC)

Теперь при вызове переменной birthday вы видите не 1980, а 1997 год.

Встроенные методы set позволяют изменять разные части объекта Date.

Методы UTC

Методы get, описанные выше, извлекают компоненты даты на основе локальных настроек часового пояса пользователя. Чтобы увеличить контроль над датами и временем, вы можете использовать методы getUTC, которые работают так же, как методы get, но вычисляют время, основанное на стандарте UTC (всемирное координированное время). Ниже приведена таблица методов UTC для объекта Date в JavaScript.

Дата/Время Метод Диапазон Пример
Год getUTCFullYear() YYYY 1970
Месяц getUTCMonth() 0-11 0 = January
День месяца getUTCDate() 1-31 1 = 1st of the month
День недели getUTCDay() 0-6 0 = Sunday
Час getUTCHours() 0-23 0 = midnight
Минута getUTCMinutes() 0-59
Секунда getUTCSeconds() 0-59
Миллисекунда getUTCMilliseconds() 0-999

Чтобы проверить разницу между локальными методами get и методами get UTC, запустите следующий код.

// Assign current time to a variable
const now = new Date();
// Print local and UTC timezones
console.log(now.getHours());
console.log(now.getUTCHours());

Этот код выведет текущее время и время по часовому поясу UTC. Если вы сейчас находитесь в часовом поясе UTC, то числа, которые выведет программа, будут одинаковыми.

UTC предоставляет международный стандарт времени и поэтому может поддерживать код в соответствии с часовыми поясами, если это необходимо в вашей программе.

Заключение

В этом мануале вы узнали, как создать экземпляр объекта Date, как использовать его встроенные методы для доступа и изменения компонентов определенной даты. Более подробную информацию о времени и дате в JavaScript вы можете найти на Mozilla Developer Network .

Умение работать с датами важно для многих общих задач в JavaScript: от создания регулярных отчетов до отображения дат и расписаний в правильном часовом поясе.

Tags:

Доброго времени суток всем подписчикам и читателям блога сайт. В этой статье мы изучим встроенный объект языка программирования jscript – Date.

Объект JS Date предназначен для работы с датой и временем и для преобразования строк в формат даты. При создании класса Date, jscript использует ключевое слово new и один из трёх видов конструкторов, давайте посмотрим на их общий синтаксис:

Класс JS DATE – дата и время

Date () – в данном случае будет произведен вывод текущей даты и времени js в формате: , время задается по Гринвичу, т. е. с использованием UTC (UCT - Universal Coordinated Time).

Date (nMilliseconds) – Как видим, тут мы передаем один параметр nMilliseconds, который задает дату1 в миллисекундах, считая от 1 января 1970 года

Date (year, month, date [, hours [, min [, sec [, ms]]]]) – Тут мы видим, что конструктору передаются несколько параметров, что позволяет задать вручную все значения даты и времени js:

  • year - Год в четырехзначном формате, например 1998 (но не 98).
  • month - Номер месяца от 0 (январь) до 11 (декабрь).
  • date - Календарная дата1 в диапазоне от 1 до 31.
  • hours - Час дня в диапазоне от 0 до 23.
  • min - Минуты в диапазоне от 0 до 59.
  • sec – Количество секунд в диапазоне от 0 до 59.
  • ms – Число миллисекунд в диапазоне от 0 до 999.

Хорошо, давайте посмотрим на следующий пример использования класса JS DATE в сценарии на языке программирования , который работает под управлением сервера :

// Объект JS Date // 1_date.js //********************************** var a, b, c //Текущая дата1 и время1 a = new Date () ; //js //Период через 1000 мс после 1 января 1970 года b = new Date (1000 ) ; //Собственная временная дата2 c = new Date (2000 , 5 , 20 , 12 , 20 , 55 , 97 ) ; WScript.Echo (a + "\n " + b + "\n " + c) ;

Хорошо, теперь давайте рассмотри основные методы класса Date JS языка.

getFullYear () – Номер текущего года в четырехзначном формате.

getDate () – Вернёт номер текущей даты (от 1 до 31).

getMonth () – Номер текущего месяца (от 1 до 12).

getDay () - Номер дня недели (0 для воскресения, 1- для понедельника. и т. д.).

getHours () – Количество часов (отсчет начинается с полуночи).

getMinutes () - Вернёт количество минут (отсчет начинается с начала часа).

getSeconds () - Число секунд (отсчет идет с начала минуты).

getMilliseconds () - Число миллисекунд.

Давайте рассмотрим следующий пример сценария, который демонстрирует работу с вышеописанными методами класса Date:

//********************************** // Объект JS Date // 2_date.js //********************************** var js_new_date = new Date ; //js var gFullYear, gDate, gMonth, gDay, gHours, gMinutes, gSeconds, gMilliseconds, MyArr, index, list= "" ; gFullYear = "Год\t \t " + js_new_date.getFullYear () ; gDate = "Дата\t \t " + js_new_date.getDate () ; gMonth = "Месяц\t \t " + js_new_date.getMonth () ; gDay = "День недели\t \t " + js_new_date.getDay () ; gHours = "Часы\t \t " + js_new_date.getHours () ; gMinutes = "Минуты\t \t " + js_new_date.getMinutes () ; gSeconds = "Секунды\t \t " + js_new_date.getSeconds () ; gMilliseconds = "Миллисекунды\t \t " + js_new_date.getMilliseconds () ; //Сохраняем всё в массиве MyArr = [ gFullYear, gDate, gMonth, gDay, gHours, gMinutes, gSeconds, gMilliseconds] for (var index in my_arr) { list+= MyArr[ index] + "\n "

Видим, что тут мы объявили ряд переменных jscript, которые хранят значения, возвращаемые функциями класса Date() JS языка, далее, все переменные мы прописали в массив MyArr (детальное описание массивов есть в статье " "), доступ к нему осуществляется через цикл for in (данный цикл я описал в статье " "). В самом конце мы выводим список значений для всех переменных.

getTime () – Количество миллисекунд, которые прошли с 1 января 1970 года. Он идеально подходит для вычисления времени работы блока кода.

//********************************** // js date // Метод getTime() // 3_date.js //********************************** var to_time, end_time, time_elapsed, summ= 0 ; //Начало to_time = (new Date () ) .getTime () ; for (var i= 0 ; i

Похожие публикации