Date
Содержание:
Локаль
Локаль – первый и самый важный аргумент всех методов, связанных с интернационализацией.
Локаль описывается строкой из трёх компонентов, которые разделяются дефисом:
- Код языка.
- Код способа записи.
- Код страны.
На практике не всегда указаны три, обычно меньше:
- – русский язык, без уточнений.
- – английский язык, используемый в Англии ().
- – английский язык, используемый в США ().
- – китайский язык (), записываемый упрощённой иероглифической письменностью (), используемый в Китае.
Также через суффикс можно указать расширения локалей, например – тайский язык (), используемый в Таиланде (), с записью чисел тайскими буквами (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) .
Стандарт, который описывает локали – RFC 5464, языки описаны в IANA language registry.
Все методы принимают локаль в виде строки или массива, содержащего несколько локалей в порядке предпочтения.
Если локаль не указана или – берётся локаль по умолчанию, установленная в окружении (браузере).
– вспомогательная настройка, которую тоже можно везде указать, она определяет способ подбора локали, если желаемая недоступна.
У него два значения:
- – означает простейший порядок поиска путём обрезания суффикса, например → → → локаль по умолчанию.
- – использует встроенные алгоритмы и предпочтения браузера (или другого окружения) для выбора подходящей локали.
По умолчанию стоит .
Если локалей несколько, например то пытается подобрать наиболее подходящую локаль для первой из списка (китайская), если не получается – переходит ко второй (русской) и так далее. Если ни одной не нашёл, например на компьютере не совсем поддерживается ни китайский ни русский, то используется локаль по умолчанию.
Как правило, является здесь наилучшим выбором.
Объект Date. Работа с датами
Объект Date позволяет работать с датами и временем в JavaScript.
Существуют различные способы создания объекта Date. Первый способ заключается в использовании пустого конструктора без параметров:
var currentDate = new Date(); document.write(currentDate);
В этом случае объект будет указывать на текущую дату компьютера:
Второй способ заключается в передаче в конструктор Date количества миллисекунд, которые прошли с начала эпохи Unix, то есть с 1 января 1970
года 00:00:00 GMT:
var myDate = new Date(1359270000000); document.write(myDate); // Sun Jan 27 2013 10:00:00 GMT+0300 (RTZ 2 (зима))
Третий способ состоит в передаче в конструктор Date дня, месяца и года:
var myDate = new Date("27 March 2008"); // или так // var myDate = new Date("3/27/2008"); document.write(myDate); // Thu Mar 27 2008 00:00:00 GMT+0300 (RTZ 2 (зима))
Если мы используем полное название месяца, то оно пишется в по-английски, если используем сокращенный вариант, тогда используется формат месяц/день/год.
Четвертый способ состоит в передаче в конструктор Date всех параметров даты и времени:
var myDate = new Date(2012,11,25,18,30,20,10); // Tue Dec 25 2012 18:30:20 GMT+0300 (RTZ 2 (зима))
В данном случае используются по порядку следующие параметры: .
При этом надо учитывать, что отсчет месяцев начинается с нуля, то есть январь — 0, а декабрь — 11.
Получение даты и времени
Для получения различных компонентов даты применяется ряд методов:
-
getDate(): возвращает день месяца
-
getDay(): возвращает день недели (отсчет начинается с 0 — воскресенье, и последний день — 6 — суббота)
-
getMonth(): возвращает номер месяца (отсчет начинается с нуля, то есть месяц с номер 0 — январь)
-
getFullYear(): возвращает год
-
toDateString(): возвращает полную дату в виде строки
-
getHours(): возвращает час (от 0 до 23)
-
getMinutes(): возвращает минуты (от 0 до 59)
-
getSeconds(): возвращает секунды (от 0 до 59)
-
getMilliseconds(): возвращает миллисекунды (от 0 до 999)
-
toTimeString(): возвращает полное время в виде строки
Получим текущую дату:
var days = ; var months = ; var myDate = new Date(); var fullDate = "Сегодня: " + myDate.getDate() + " " + months + " " + myDate.getFullYear() + ", " + days; document.write(fullDate); // Сегодня: 18 Август 2015, Вторник
Перевести из числовых значений в более привычные названия для дней недели и месяцев используются массивы. Получив индекс дня недели ()
и индекс месяца () можно получить нужный элемент из массива.
Теперь получим текущее время:
var welcome; var myDate = new Date(); var hour = myDate.getHours(); var minute = myDate.getMinutes(); var second = myDate.getSeconds(); if (minute < 10) { minute = "0" + minute; } if (second < 10) { second = "0" + second; } if (hour < 12) { welcome = "Доброе утро"; } else if (hour < 17) { welcome = "Добрый день"; } else { welcome = "Добрый вечер"; } document.write(welcome + ", текущее время: " + hour + ":" + minute + ":" + second); // Добрый вечер, текущее время: 22:50:39
Установка даты и времени
Коме задания параметров даты в конструкторе для установки мы также можем использовать дополнительные методы объекта Date:
-
setDate(): установка дня в дате
-
setMonth(): уставовка месяца (отсчет начинается с нуля, то есть месяц с номер 0 — январь)
-
setFullYear(): устанавливает год
-
setHours(): установка часа
-
setMinutes(): установка минут
-
setSeconds(): установка секунд
-
setMilliseconds(): установка миллисекунд
Установим дату:
var days = ; var months = ; var myDate = new Date(); myDate.setDate(15); myDate.setMonth(6); myDate.setYear(2013); var fullDate = myDate.getDate() + " " + months + " " + myDate.getFullYear() + ", " + days; document.write(fullDate); // 15 Июль 2013, Понедельник
При установке значений мы можем передать величину, большую, чем максимальное допустимое значение. Например, установить для часа число 54:
myDate.setHour(54);
В этом случае значение часа будет равно 54 — 24 * 2 = 6, а оставшиеся часы будут составлять два дня (24 * 2), что прибавит к дате два дня. То же самое действует и
в отношении дней, минут, секунд, миллисекунд и месяцев.
НазадВперед
Синтаксис конструктора объекта
new Date(); // создает объект Date со значением, равным текущим дате и времени new Date(value); // числовой аргумент new Date(dateString); //строковый аргумент new Date(year, monthIndex, day, hours, minutes, seconds, milliseconds); // от 2 до 7 числовых аргументов value - Integer dateString - String year, monthIndex, day, hours, minutes, seconds, milliseconds - Integer
Обратите внимание на то, что объекты Date могут быть созданы только путем вызова Date в качестве конструктора, в случае вызова в качестве обычной функции (без использования оператора new), то в качестве возвращаемого значения мы получим строку, а не объект Date. При таком вызове Date() (как функция — без оператора new) игнорирует любые переданные аргументы
В отличие от других типов объектов JavaScript, объекты Date не имеют литерального синтаксиса.
Конструктор Date(), вызванный без аргументов создаст объект Date со значением, которое будет соответствовать текущей дате и времени.
Если конструктору передается единственный числовой аргумент, то это значение используется как внутреннее числовое представление даты в миллисекундах. Это значение аналогично значению, которое возвращается с использованием метода getTime().
Если конструктору передается единственный строковый аргумент, то это значение рассматривается как строковое представление даты в формате, принимаемом методом parse().
Конструктору Date() допускается так же передать от двух до семи числовых аргументов, которые определяют индивидуальные настройки даты и времени
Используя этот синтаксис, обратите внимание на то, что все аргументы, кроме первых двух (год и месяц) не являются обязательными. Полное описание аргументов конструктора представлено ниже
Значение параметров
Параметр | Описание |
---|---|
value | Целое значение, представляющее количество миллисекунд с 00:00:00 1 января 1970 по UTC. |
dateString | Строковое значение, представляющее дату. Строка должна быть в формате, распознаваемом методом parse() (совместимые с IETF RFC 2822 временные метки, а также ISO8601). |
year | Целое значение, представляющее год. Значения от до 99 соответствуют годам с 1900 по 1999. |
monthIndex | Целое значение, представляющее месяц. Значение соответствует январю, а 11 декабрю. |
day | День месяца, заданный в виде целого значения от 1 до 31. Необязательный аргумент. |
hours | Часы, заданные в виде целого от (полночь) до 23 (11 часов вечера). Необязательный аргумент. |
minutes | Целое значение от до 59, представляющее минутный отрезок времени. Необязательный аргумент. |
seconds | Целое значение от до 59, представляющее секундный отрезок времени. Необязательный аргумент. |
milliseconds | Целое значение от до 999, представляющее миллисекундный отрезок времени. Необязательный аргумент. |
About the Author
hector rivas
Software Developer (Senior) |
||
United States |
Professional software engineer with 30+ years of experience delivering systems across diverse industries, looking for the next opportunity to deliver cutting edge end-to-end technology solutions.
Avid reader, disciplined writer and enthusiastic tinkerer with a background in electronics, looking inside and thinking outside the box, genuinely passionate about robust, extensible, reusable and performant code.
Framework developer leading, coaching and learning about best practices, code quality, DevOps and software and data lifecycle management with an agile mindset to create the most elegant and sustainable solutions.
Date Object Methods
Method | Description |
---|---|
getDate() | Returns the day of the month (from 1-31) |
getDay() | Returns the day of the week (from 0-6) |
getFullYear() | Returns the year |
getHours() | Returns the hour (from 0-23) |
getMilliseconds() | Returns the milliseconds (from 0-999) |
getMinutes() | Returns the minutes (from 0-59) |
getMonth() | Returns the month (from 0-11) |
getSeconds() | Returns the seconds (from 0-59) |
getTime() | Returns the number of milliseconds since midnight Jan 1 1970, and a specified date |
getTimezoneOffset() | Returns the time difference between UTC time and local time, in minutes |
getUTCDate() | Returns the day of the month, according to universal time (from 1-31) |
getUTCDay() | Returns the day of the week, according to universal time (from 0-6) |
getUTCFullYear() | Returns the year, according to universal time |
getUTCHours() | Returns the hour, according to universal time (from 0-23) |
getUTCMilliseconds() | Returns the milliseconds, according to universal time (from 0-999) |
getUTCMinutes() | Returns the minutes, according to universal time (from 0-59) |
getUTCMonth() | Returns the month, according to universal time (from 0-11) |
getUTCSeconds() | Returns the seconds, according to universal time (from 0-59) |
getYear() | Deprecated. Use the getFullYear() method instead |
now() | Returns the number of milliseconds since midnight Jan 1, 1970 |
parse() | Parses a date string and returns the number of milliseconds since January 1, 1970 |
setDate() | Sets the day of the month of a date object |
setFullYear() | Sets the year of a date object |
setHours() | Sets the hour of a date object |
setMilliseconds() | Sets the milliseconds of a date object |
setMinutes() | Set the minutes of a date object |
setMonth() | Sets the month of a date object |
setSeconds() | Sets the seconds of a date object |
setTime() | Sets a date to a specified number of milliseconds after/before January 1, 1970 |
setUTCDate() | Sets the day of the month of a date object, according to universal time |
setUTCFullYear() | Sets the year of a date object, according to universal time |
setUTCHours() | Sets the hour of a date object, according to universal time |
setUTCMilliseconds() | Sets the milliseconds of a date object, according to universal time |
setUTCMinutes() | Set the minutes of a date object, according to universal time |
setUTCMonth() | Sets the month of a date object, according to universal time |
setUTCSeconds() | Set the seconds of a date object, according to universal time |
setYear() | Deprecated. Use the setFullYear() method instead |
toDateString() | Converts the date portion of a Date object into a readable string |
toGMTString() | Deprecated. Use the toUTCString() method instead |
toISOString() | Returns the date as a string, using the ISO standard |
toJSON() | Returns the date as a string, formatted as a JSON date |
toLocaleDateString() | Returns the date portion of a Date object as a string, using locale conventions |
toLocaleTimeString() | Returns the time portion of a Date object as a string, using locale conventions |
toLocaleString() | Converts a Date object to a string, using locale conventions |
toString() | Converts a Date object to a string |
toTimeString() | Converts the time portion of a Date object to a string |
toUTCString() | Converts a Date object to a string, according to universal time |
UTC() | Returns the number of milliseconds in a date since midnight of January 1, 1970, according to UTC time |
valueOf() | Returns the primitive value of a Date object |
❮ Previous
Next ❯
Преобразование дат
При создании даты может возникнуть необходимость поменять местами день и месяц (например, при передаче параметров в функцию), т.к. дата в привычном нам формате имеет синтаксис «день.месяц.год». Однако при создании даты с помощью класса Date необходимо передавать строку в формате «месяц/день/год». Для того чтобы изменить порядок расположения дня и месяца в дате, нужно использовать метод ) для строк:
Меняем местами день и месяц
JavaScript
let someDates = ;
let dateFormat = someDates.map(one => {
let dateStr = one.replace(/(\d{2})\.(\d{2})\./, ‘$2/$1/’);
console.log(one, dateStr);
return new Date(dateStr);
});
console.log(dateFormat);
1 2 3 4 5 6 7 |
let someDates=’22.06.1941′,’12.04.1961′,’01.09.1939′,’07.11.1917′,’24.08.1992′,’12.12.2012′,’01.01.2021′; let dateFormat=someDates.map(one=>{ let dateStr=one.replace((\d{2})\.(\d{2})\.,’$2/$1/’); console.log(one,dateStr); returnnewDate(dateStr); }); console.log(dateFormat); |
В результате работы скрипта мы получим массив дат.
Пример: получение даты из поля типа date
В ряде случаев бывает необходимость в форме разместить поле с , например, для выбора даты начала и/или конца какого-либо периода (поездка, отправка груза и т.п.). Дата из такого поля возвращается в формате «гггг-мм-дд», хотя визуально выбор выглядит, как «дд.мм.гггг». Однако далеко не всегда такой формат подойдет для ваших целей. Кстати, если необходимо установить в поле ввода даты какое-то определенное число, то формат также должен быть «гггг-мм-дд», иначе вы получите предупреждение в консоли (в примере ниже нужно раскомментировать строки 19-21).
Давайте посмотрим, как мы можем использовать поле для ввода даты в скрипте:
Использование поля ввода даты
<div class=»testDate»>
<p id=»datePicker»></p>
<input type=»date» id=»myDate»>
<button type=»button» class=»button» id=»getDate»>Получить</button>
<button type=»button» class=»button» id=»setNowDate»>Установить сегодняшнюю дату</button>
</div>
<script>
getDate.addEventListener(‘click’, function() {
if (myDate.value == ») alert(‘Выберите сначала дату!’);
else {datePicker.innerHTML = ‘Дата из input: ‘+myDate.value;
datePicker.innerHTML += ‘<br>Преобразованная дата на основе <strong>new Date()</strong>: ‘
+new Date(myDate.value).toLocaleDateString();
datePicker.innerHTML += ‘<br>Преобразованная дата на основе <strong>регулярных выражений</strong>\
и <strong>метода replace()</strong>: ‘+myDate.value.replace(/(\d{4})-(\d{2})-(\d{2})/, ‘$3.$2.$1’);
}
});
setNowDate.addEventListener(‘click’, function() {
let now = new Date();
// myDate.value = now;
// myDate.value = now.toDateString();
// myDate.value = » + now.getFullYear() + ‘-‘ + (now.getMonth()+1) + ‘-‘ + now.getDate();
myDate.value = »+now.getFullYear()+’-‘+format(now.getMonth()+1)+’-‘+format(now.getDate());
});
</script>
1 22 |
<div class=»testDate»> <pid=»datePicker»><p> <input type=»date»id=»myDate»> <button type=»button»class=»button»id=»getDate»>Получить<button> <button type=»button»class=»button»id=»setNowDate»>Установитьсегодняшнююдату<button> <div> <script> getDate.addEventListener(‘click’,function(){ if(myDate.value==»)alert(‘Выберите сначала дату!’); else{datePicker.innerHTML=’Дата из input: ‘+myDate.value; datePicker.innerHTML+='<br>Преобразованная дата на основе <strong>new Date()</strong>: ‘ +newDate(myDate.value).toLocaleDateString(); datePicker.innerHTML+='<br>Преобразованная дата на основе <strong>регулярных выражений</strong>\ и <strong>метода replace()</strong>: ‘+myDate.value.replace((\d{4})-(\d{2})-(\d{2}),’$3.$2.$1’); } }); setNowDate.addEventListener(‘click’,function(){ let now=newDate(); // myDate.value = now; // myDate.value = now.toDateString(); myDate.value=»+now.getFullYear()+’-‘+format(now.getMonth()+1)+’-‘+format(now.getDate()); }); </script> |
Особенность получения даты на основе является то, что в полях месяц и день должен быть с ведущим нулем, если число меньше 10. Для решения этой проблемы воспользуемся функцией из скрипта .
Кроме того, в поле месяц число должно быть на единицу больше, чем возвращает метод , т.к. в нем счет месяцев начинается с 0, а не с 1, как в привычном нам формате дат.
Проверим пример на практике:
Получить Установить сегодняшнюю дату
Просмотров:
283
JavaScript и База данных часовых поясов IANA
Как я вкратце упомянул ранее, поддержка часового пояса в JavaScript довольно плохая. Поскольку по умолчанию он следует часовому поясу определенного региона (точнее, часовому поясу, выбранному во время установки ОС), возможности изменить его на новый часовой пояс нет. Кроме того, его спецификация для стандарта баз данных так же плохо определена, вы заметите это, если внимательно ознакомитесь с документацией ES2015. В отношении местного часового пояса и доступности летнего времени существует лишь несколько неопределенных заявлений. Например, летнее время определяется следующим образом: .
В зависимости от реализации, алгоритм использует наилучшую доступную информацию о часовых поясах для определения местной поправки на летнее время DaylightSavingTA (t), измеряемой в миллисекундах. Ожидается, что реализация ECMAScript сделает все возможное, чтобы определить местное летнее время.
Похоже, он просто говорит: «Эй, ребята, попробуйте и сделайте все возможное, чтобы это сработало». Это создает проблемы в кроссбраузерности. Вы можете подумать: «Это небрежно!», и тогда вы заметите еще одну строчку прямо под ним:
ПРИМЕЧАНИЕ. рекомендуется использовать информацию о часовых поясах из базы данных часовых поясов IANA http://www.iana.org/time-zones/.
Спецификации ECMA признается, что не имеет специальной стандартной базы данных в JavaScript и рекомендует использовать базу данных часовых поясов IANA. В результате разные браузеры используют свои собственные решения для расчета часовых поясов, и они часто несовместимы друг с другом. Позже в ECMA-402 добавили возможность использовать часовой пояс IANA в виде Intl.DateTimeFormat для ECMAScript Internationalization API. Однако этот вариант по-прежнему гораздо менее надежен, чем в других языках программирования.
Часовой пояс в серверно-клиентской среде
Мы предположим простой сценарий, в котором необходимо учитывать часовой пояс. Допустим, мы собираемся разработать простое приложение-календарь, которое будет обрабатывать информацию о времени. Когда пользователь вводит дату и время в поле на странице реестра в клиентской среде, данные передаются на сервер и сохраняются в БД. Затем клиент получает зарегистрированные данные расписания с сервера и отображает их на экране.
Однако здесь есть то, что нужно учесть. Что, если некоторые из клиентов, обращающихся к серверу, находятся в разных часовых поясах? Расписание, зарегистрированное на 11 марта 2017 г. в 11:30 в Сеуле, должно отображаться как 10 марта 2017 г. в 21:30 при просмотре расписания в Нью-Йорке. Чтобы сервер поддерживал клиентов из разных часовых поясов, расписание, хранимое на сервере, должно иметь абсолютные значения, на которые не влияют часовые пояса. Каждый сервер имеет свой способ хранения абсолютных значений, и это выходит за рамки данной статьи, поскольку все зависит от сервера или среды базы данных. Однако для того, чтобы это работало, дата и время, передаваемые от клиента на сервер, должны быть значениями, основанными на том же смещении (обычно в формате UTC) или значениями, которые также включают данные часового пояса клиентской среды.
Обычно такие данные передаются в форме времени Unix на основе UTC или ISO-8601, содержащего информацию о смещении. В приведенном выше примере, если 11:30 утра 11 марта 2017 г. в Сеуле необходимо преобразовать во время Unix, это будет целочисленный тип со значением 1489199400. В соответствии с ISO-8601 это будет строковый тип, значение которого: .
Если вы работаете с этим с помощью JavaScript в среде браузера, вы должны преобразовать введенное значение, как описано выше, а затем преобразовать его обратно в соответствии с часовым поясом пользователя. Необходимо учитывать обе эти две задачи. В языке программирования первый называется «синтаксическим анализом», а второй «форматированием». Теперь давайте выясним, как это обрабатывается в JavaScript.
Даже когда вы работаете с JavaScript в серверной среде с использованием Node.js, возможно вам может потребоваться проанализировать данные, полученные от клиента. Однако, поскольку серверы обычно синхронизируют свой часовой пояс с базой данных, а задача форматирования обычно предоставляется клиентам, вам нужно учитывать меньше факторов, чем в среде браузера. В этой статье мы будем рассматривать примеры в среде браузера.
Автоисправление даты
Автоисправление – это очень полезная особенность объектов . Можно устанавливать компоненты даты вне обычного диапазона значений, а объект сам себя исправит.
Пример:
Неправильные компоненты даты автоматически распределяются по остальным.
Предположим, нам требуется увеличить дату «28 февраля 2016» на два дня. В зависимости от того, високосный это год или нет, результатом будет «2 марта» или «1 марта». Нам об этом думать не нужно. Просто прибавляем два дня. Объект позаботится об остальном:
Эту возможность часто используют, чтобы получить дату по прошествии заданного отрезка времени. Например, получим дату «спустя 70 секунд с текущего момента»:
Также можно установить нулевые или даже отрицательные значения. Например:
Benchmarking
If we want a reliable benchmark of CPU-hungry function, we should be careful.
For instance, let’s measure two functions that calculate the difference between two dates: which one is faster?
Such performance measurements are often called “benchmarks”.
These two do exactly the same thing, but one of them uses an explicit to get the date in ms, and the other one relies on a date-to-number transform. Their result is always the same.
So, which one is faster?
The first idea may be to run them many times in a row and measure the time difference. For our case, functions are very simple, so we have to do it at least 100000 times.
Let’s measure:
Wow! Using is so much faster! That’s because there’s no type conversion, it is much easier for engines to optimize.
Okay, we have something. But that’s not a good benchmark yet.
Imagine that at the time of running CPU was doing something in parallel, and it was taking resources. And by the time of running that work has finished.
A pretty real scenario for a modern multi-process OS.
As a result, the first benchmark will have less CPU resources than the second. That may lead to wrong results.
For more reliable benchmarking, the whole pack of benchmarks should be rerun multiple times.
For example, like this:
Modern JavaScript engines start applying advanced optimizations only to “hot code” that executes many times (no need to optimize rarely executed things). So, in the example above, first executions are not well-optimized. We may want to add a heat-up run:
Be careful doing microbenchmarking
Modern JavaScript engines perform many optimizations. They may tweak results of “artificial tests” compared to “normal usage”, especially when we benchmark something very small, such as how an operator works, or a built-in function. So if you seriously want to understand performance, then please study how the JavaScript engine works. And then you probably won’t need microbenchmarks at all.
The great pack of articles about V8 can be found at http://mrale.ph.
Класс GregorianCalendar
КлассGregorianCalendar – конкретная реализация класса Calendar, отображающий обыкновенный григорианский календарь.
Метод getInstance() Calendar возвращает GregorianCalendar, который по умолчанию инициализирован текущей датой и временем, локализацией и часовым поясом. GregorianCalendar определяет 2 поля: н. э и до н. э. Это две эпохи, определяющиеся по григорианскому календарю.
Конструкторы для объектов GregorianCalendar:
Название конструктора | Краткое описание |
GregorianCalendar() | Создает GregorianCalendar, используя текущей датой и временем, локализацией и часовым поясом по умолчанию. |
GregorianCalendar(int year, int month, int date) | Создает значение GregorianCalendar с учетом заданной даты в часовом поясе и локализацией по умолчанию. |
GregorianCalendar(int year, int month, int date, int hour, int minute) | Конструирует GregorianCalendar в соответствии с заданной датой и временем в часовом поясе и локализацией по умолчанию. |
GregorianCalendar(int year, int month, int date, int hour, int minute, int second) | Конструирует GregorianCalendar в соответствии с заданной датой и временем в часовом поясе и локализацией по умолчанию. |
GregorianCalendar(Locale aLocale) | Формирует GregorianCalendar в соответствии с текущим временем в часовом поясе по умолчанию в рамках заданной локализации. |
GregorianCalendar(TimeZone zone) | Создает GregorianCalendar, основанный на текущем времени в данной зоне времени с локализацией по умолчанию. |
GregorianCalendar(TimeZone zone, Locale aLocale) | Формирует GregorianCalendar с учетом текущего времени в указанном часовом поясе и локализации. |
Полезные методы класса GregorianCalendar:
Метод | Описание |
void add(int field, int amount) | Добавляет указанное количество времени в данное временное поле в соответствии с правилами календаря. |
protected void computeFields() | Преобразует время по Гринвичу в миллисекунды до значения полей времени. |
protected void computeTime() | Преобразует значения временного поля Календаря в UTC формате в миллисекундах. |
boolean equals(Object obj) | Сравнивает этот GregorianCalendar эталонным объектом. |
int get(int field) | Получает значение для поля заданного времени. |
int getActualMaximum(int field) | Возвращает максимальное значение, которое это поле может иметь, учитывая текущую дату. |
int getActualMinimum(int field) | Возвращает минимальное значение, которое это поле может иметь, учитывая текущую дату. |
int getGreatestMinimum(int field) | Возвращает наибольшее минимальное значение для данного поля, если изменяется. |
Date getGregorianChange() | Получает изменения даты по григорианскому календарю. |
int getLeastMaximum(int field) | Возвращает минимально максимальное значение для данного поля, если изменяется. |
int getMaximum(int field) | Возвращает максимальное значение для данного поля. |
Date getTime() | Определяет текущее время в соответствии с календарем. |
long getTimeInMillis() | Получает текущее время по Календарю как длительное. |
TimeZone getTimeZone() | Возвращает часовой пояс. |
int getMinimum(int field) | Возвращает минимальное значение для данного поля. |
int hashCode() | Переопределите хэш-код. |
boolean isLeapYear(int year) | Определяет, является ли год високосным. |
void roll(int field, boolean up) | Добавление или вычитание (вверх/вниз) одной единицы времени в данном временном поле без изменений в больших полях. |
void set(int field, int value) | Устанавливает временное поле с заданным значением. |
void set(int year, int month, int date) | Задает значения для поля год, месяц и дата. |
void set(int year, int month, int date, int hour, int minute) | Задает значения для поля год, месяц, дату, час и минуту. |
void set(int year, int month, int date, int hour, int minute, int second) | Задает значения для поля год, месяц, дату, час, минуту и секунду. |
void setGregorianChange(Date date) | Устанавливает дату изменения грегорианского календаря. |
void setTime(Date date) | Устанавливает в соответствии с данным календарем текущее время с заданной датой. |
void setTimeInMillis(long millis) | Устанавливает в соответствии с данным календарем текущее время от заданного long значения. |
void setTimeZone(TimeZone value) | Задает часовой пояс со значением заданного часового пояса. |
String toString() | Возвращает строковое представление календаря. |
Форматирование и вывод дат
Во всех браузерах, кроме IE10-, поддерживается новый стандарт Ecma 402, который добавляет специальные методы для форматирования дат.
Это делается вызовом , в котором можно задать много настроек. Он позволяет указать, какие параметры даты нужно вывести, и ряд настроек вывода, после чего интерпретатор сам сформирует строку.
Пример с почти всеми параметрами даты и русским, затем английским (США) форматированием:
Вы сможете подробно узнать о них в статье Intl: интернационализация в JavaScript, которая посвящена этому стандарту.
Методы вывода без локализации:
, ,
Возвращают стандартное строчное представление, не заданное жёстко в стандарте, а зависящее от браузера. Единственное требование к нему – читаемость человеком. Метод возвращает дату целиком, и – только дату и время соответственно.
То же самое, что , но дата в зоне UTC.
Возвращает дату в формате ISO Детали формата будут далее. Поддерживается современными браузерами, не поддерживается IE8-.
Если хочется иметь большую гибкость и кросс-браузерность, то также можно воспользоваться специальной библиотекой, например Moment.JS или написать свою функцию форматирования.