Всё, что нужно знать о датах в javascript
Содержание:
- Локаль
- Creation
- JavaScript
- Автоисправление даты
- Скриншоты
- Создание
- new Date(year, month, …)
- Displaying Dates
- Основные возможности O&O Defrag
- Бенчмаркинг
- Синтаксис конструктора объекта
- Access date components
- 7 Класс DateFormat
- Date Object Methods
- Даты, Intl.DateTimeFormat
- Выращивание рыбы и раков, организация рыбалки
- Объект Date. Работа с датами
- Итого
- Итого
- Форматирование и вывод дат
Локаль
Локаль – первый и самый важный аргумент всех методов, связанных с интернационализацией.
Локаль описывается строкой из трёх компонентов, которые разделяются дефисом:
- Код языка.
- Код способа записи.
- Код страны.
На практике не всегда указаны три, обычно меньше:
- – русский язык, без уточнений.
- – английский язык, используемый в Англии ().
- – английский язык, используемый в США ().
- – китайский язык (), записываемый упрощённой иероглифической письменностью (), используемый в Китае.
Также через суффикс можно указать расширения локалей, например – тайский язык (), используемый в Таиланде (), с записью чисел тайскими буквами (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) .
Стандарт, который описывает локали – RFC 5464, языки описаны в IANA language registry.
Все методы принимают локаль в виде строки или массива, содержащего несколько локалей в порядке предпочтения.
Если локаль не указана или – берётся локаль по умолчанию, установленная в окружении (браузере).
– вспомогательная настройка, которую тоже можно везде указать, она определяет способ подбора локали, если желаемая недоступна.
У него два значения:
- – означает простейший порядок поиска путём обрезания суффикса, например → → → локаль по умолчанию.
- – использует встроенные алгоритмы и предпочтения браузера (или другого окружения) для выбора подходящей локали.
По умолчанию стоит .
Если локалей несколько, например то пытается подобрать наиболее подходящую локаль для первой из списка (китайская), если не получается – переходит ко второй (русской) и так далее. Если ни одной не нашёл, например на компьютере не совсем поддерживается ни китайский ни русский, то используется локаль по умолчанию.
Как правило, является здесь наилучшим выбором.
Creation
To create a new object call with one of the following arguments:
-
Without arguments – create a object for the current date and time:
-
Create a object with the time equal to number of milliseconds (1/1000 of a second) passed after the Jan 1st of 1970 UTC+0.
An integer number representing the number of milliseconds that has passed since the beginning of 1970 is called a timestamp.
It’s a lightweight numeric representation of a date. We can always create a date from a timestamp using and convert the existing object to a timestamp using the method (see below).
Dates before 01.01.1970 have negative timestamps, e.g.:
-
If there is a single argument, and it’s a string, then it is parsed automatically. The algorithm is the same as uses, we’ll cover it later.
-
Create the date with the given components in the local time zone. Only the first two arguments are obligatory.
- The must have 4 digits: is okay, is not.
- The count starts with (Jan), up to (Dec).
- The parameter is actually the day of month, if absent then is assumed.
- If is absent, they are assumed to be equal .
For instance:
The maximal precision is 1 ms (1/1000 sec):
JavaScript
JS Array
concat()
constructor
copyWithin()
entries()
every()
fill()
filter()
find()
findIndex()
forEach()
from()
includes()
indexOf()
isArray()
join()
keys()
length
lastIndexOf()
map()
pop()
prototype
push()
reduce()
reduceRight()
reverse()
shift()
slice()
some()
sort()
splice()
toString()
unshift()
valueOf()
JS Boolean
constructor
prototype
toString()
valueOf()
JS Classes
constructor()
extends
static
super
JS Date
constructor
getDate()
getDay()
getFullYear()
getHours()
getMilliseconds()
getMinutes()
getMonth()
getSeconds()
getTime()
getTimezoneOffset()
getUTCDate()
getUTCDay()
getUTCFullYear()
getUTCHours()
getUTCMilliseconds()
getUTCMinutes()
getUTCMonth()
getUTCSeconds()
now()
parse()
prototype
setDate()
setFullYear()
setHours()
setMilliseconds()
setMinutes()
setMonth()
setSeconds()
setTime()
setUTCDate()
setUTCFullYear()
setUTCHours()
setUTCMilliseconds()
setUTCMinutes()
setUTCMonth()
setUTCSeconds()
toDateString()
toISOString()
toJSON()
toLocaleDateString()
toLocaleTimeString()
toLocaleString()
toString()
toTimeString()
toUTCString()
UTC()
valueOf()
JS Error
name
message
JS Global
decodeURI()
decodeURIComponent()
encodeURI()
encodeURIComponent()
escape()
eval()
Infinity
isFinite()
isNaN()
NaN
Number()
parseFloat()
parseInt()
String()
undefined
unescape()
JS JSON
parse()
stringify()
JS Math
abs()
acos()
acosh()
asin()
asinh()
atan()
atan2()
atanh()
cbrt()
ceil()
clz32()
cos()
cosh()
E
exp()
expm1()
floor()
fround()
LN2
LN10
log()
log10()
log1p()
log2()
LOG2E
LOG10E
max()
min()
PI
pow()
random()
round()
sign()
sin()
sqrt()
SQRT1_2
SQRT2
tan()
tanh()
trunc()
JS Number
constructor
isFinite()
isInteger()
isNaN()
isSafeInteger()
MAX_VALUE
MIN_VALUE
NEGATIVE_INFINITY
NaN
POSITIVE_INFINITY
prototype
toExponential()
toFixed()
toLocaleString()
toPrecision()
toString()
valueOf()
JS OperatorsJS RegExp
constructor
compile()
exec()
g
global
i
ignoreCase
lastIndex
m
multiline
n+
n*
n?
n{X}
n{X,Y}
n{X,}
n$
^n
?=n
?!n
source
test()
toString()
(x|y)
.
\w
\W
\d
\D
\s
\S
\b
\B
\0
\n
\f
\r
\t
\v
\xxx
\xdd
\uxxxx
JS Statements
break
class
continue
debugger
do…while
for
for…in
for…of
function
if…else
return
switch
throw
try…catch
var
while
JS String
charAt()
charCodeAt()
concat()
constructor
endsWith()
fromCharCode()
includes()
indexOf()
lastIndexOf()
length
localeCompare()
match()
prototype
repeat()
replace()
search()
slice()
split()
startsWith()
substr()
substring()
toLocaleLowerCase()
toLocaleUpperCase()
toLowerCase()
toString()
toUpperCase()
trim()
valueOf()
Автоисправление даты
Автоисправление – это очень полезная особенность объектов . Можно устанавливать компоненты даты вне обычного диапазона значений, а объект сам себя исправит.
Пример:
Неправильные компоненты даты автоматически распределяются по остальным.
Предположим, нам требуется увеличить дату «28 февраля 2016» на два дня. В зависимости от того, високосный это год или нет, результатом будет «2 марта» или «1 марта». Нам об этом думать не нужно. Просто прибавляем два дня. Объект позаботится об остальном:
Эту возможность часто используют, чтобы получить дату по прошествии заданного отрезка времени. Например, получим дату «спустя 70 секунд с текущего момента»:
Также можно установить нулевые или даже отрицательные значения. Например:
Скриншоты
Создание
Для создания нового объекта типа используется один из синтаксисов:
-
Создаёт объект с текущей датой и временем:
-
Создаёт объект , значение которого равно количеству миллисекунд (1/1000 секунды), прошедших с 1 января 1970 года GMT+0.
-
Если единственный аргумент – строка, используется вызов (см. далее) для чтения даты из неё.
-
Дату можно создать, используя компоненты в местной временной зоне. Для этого формата обязательны только первые два аргумента. Отсутствующие параметры, начиная с считаются равными нулю, а – единице.
Заметим:
-
Год должен быть из 4 цифр.
-
Отсчёт месяцев начинается с нуля 0.
Например:
Дата задана с точностью до миллисекунд:
new Date(year, month, …)
creates a new date object with a specified date and time.
7 numbers specify year, month, day, hour, minute, second, and millisecond (in that order):
var d = new Date(2018, 11, 24, 10, 33, 30, 0);
Note: JavaScript counts months from 0 to 11.
January is 0. December is 11.
6 numbers specify year, month, day, hour, minute, second:
var d = new Date(2018, 11, 24, 10, 33, 30);
5 numbers specify year, month, day, hour, and minute:
var d = new Date(2018, 11, 24, 10, 33);
4 numbers specify year, month, day, and hour:
var d = new Date(2018, 11, 24, 10);
3 numbers specify year, month, and day:
var d = new Date(2018, 11, 24);
2 numbers specify year and month:
var d = new Date(2018, 11);
You cannot omit month. If you supply only one parameter it will be treated as milliseconds.
Displaying Dates
JavaScript will (by default) output dates in full text string format:
When you display a date object in HTML, it is automatically converted to a
string, with the method.
d = new Date();
document.getElementById(«demo»).innerHTML = d;
Same as:
d = new Date();
document.getElementById(«demo»).innerHTML = d.toString();
The method converts a date to a UTC string (a date display
standard).
var d = new Date();
document.getElementById(«demo»).innerHTML = d.toUTCString();
The method converts a date to a more readable
format:
var d = new Date();
document.getElementById(«demo»).innerHTML = d.toDateString();
The method converts a date to a string, using the ISO standard format:
Основные возможности O&O Defrag
- Утилита увеличивает производительность HDD в два раза после проведения дефрагментации.
- Возможность работы в фоне не отвлекает пользователя от дел.
- Программа предотвращает фрагментацию.
- Специальный плагин DiskCleaner очищает дисковое пространство от мусорных файлов.
- Фильтр фрагментированных файлов обнаруживает более уязвимые участки на диске и занимается ими в первую очередь.
- Программа оптимизирует сектора SSD дисков.
- Возможность фрагментировать одновременно несколько дисков.
- Оперативное восстановление файлов с диска и запись резервной копии.
- Функция управление электропитанием для ноутбуков.
- Помощник для создания события дефрагментации по дате.
Преимущества
- DiskCleaner. Быстрое удаление ненужной информации и копий документов;
- DiskStat. Простой интерфейс для мониторинга за файлами;
- Показ статистики производительности за все время пользования;
- Предотвращение кражи личных данных;
- Восстановление высокой скорости загрузки системы;
- Оптимизация диска во время игр.
Недостатки
- Английский язык;
- Необходима регистрация продукта перед использованием.
Скриншоты: (кликнуть для увеличения)
Как пользоваться программой O&O Defrag
Переходим во вкладку Setting (настройки). Если вы не желаете видеть значок программы в трее, то снимите галочку с Show O&O Defrag icon in the tray. Не многим пользователям нравиться, когда в реестре висит множество программ. В главном окне выбираем нужный диск для дефрагментации. После выбора, нажимаем кнопку «Start». Процесс оптимизации диска длителен и может занимать от часа до двух.
Бесплатная лицензия O&O Defrag 20 Professional
Для получении лицензии нужно:
Важная информация
Обратите внимание, что из-за многочисленных запросов по этой акции, создание персональной лицензии может занять некоторое время.
Если вы не получили лицензию по электронной почте, проверьте папку со спамом.
Используйте ссылки загрузки на этой странице, чтобы установить английскую версию, в письме будут ссылки на немецкую версию.
Активация
После установки программы выполните регистрацию в меню Info > Register now > Enter your registration code.
Условия предложения
- Вы получаете пожизненную лицензию и обновления только для версии 20.х.
- Программа доступна с английским интерфейсом.
Бенчмаркинг
Будьте внимательны, если хотите точно протестировать производительность функции, которая зависит от процессора.
Например, сравним две функции, вычисляющие разницу между двумя датами: какая сработает быстрее?
Подобные вычисления, замеряющие производительность, также называют «бенчмарками» (benchmark).
Обе функции делают буквально одно и то же, только одна использует явный метод для получения даты в миллисекундах, а другая полагается на преобразование даты в число. Результат их работы всегда один и тот же.
Но какая функция быстрее?
Для начала можно запустить их много раз подряд и засечь разницу. В нашем случае функции очень простые, так что потребуется хотя бы 100000 повторений.
Проведём измерения:
Вот это да! Метод работает ощутимо быстрее! Всё потому, что не производится преобразование типов, и интерпретаторам такое намного легче оптимизировать.
Замечательно, это уже что-то. Но до хорошего бенчмарка нам ещё далеко.
Представьте, что при выполнении процессор параллельно делал что-то ещё, также потребляющее ресурсы. А к началу выполнения он это уже завершил.
Достаточно реалистичный сценарий в современных многопроцессорных операционных системах.
В итоге у первого бенчмарка окажется меньше ресурсов процессора, чем у второго. Это может исказить результаты.
Для получения наиболее достоверных результатов тестирования производительности весь набор бенчмарков нужно запускать по нескольку раз.
Например, так:
Современные интерпретаторы JavaScript начинают применять продвинутые оптимизации только к «горячему коду», выполняющемуся несколько раз (незачем оптимизировать то, что редко выполняется). Так что в примере выше первые запуски не оптимизированы должным образом. Нелишним будет добавить предварительный запуск для «разогрева»:
Будьте осторожны с микробенчмарками
Современные интерпретаторы JavaScript выполняют множество оптимизаций. Они могут повлиять на результаты «искусственных тестов» по сравнению с «нормальным использованием», особенно если мы тестируем что-то очень маленькое, например, работу оператора или встроенной функции. Поэтому если хотите серьёзно понять производительность, пожалуйста, изучите, как работают интерпретаторы JavaScript. И тогда вам, вероятно, уже не понадобятся микробенчмарки.
Отличный набор статей о V8 можно найти на http://mrale.ph.
Синтаксис конструктора объекта
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, представляющее миллисекундный отрезок времени. Необязательный аргумент. |
Access date components
There are methods to access the year, month and so on from the object:
- getFullYear()
- Get the year (4 digits)
- getMonth()
- Get the month, from 0 to 11.
- getDate()
- Get the day of month, from 1 to 31, the name of the method does look a little bit strange.
- getHours(), getMinutes(), getSeconds(), getMilliseconds()
- Get the corresponding time components.
Not , but
Many JavaScript engines implement a non-standard method . This method is deprecated. It returns 2-digit year sometimes. Please never use it. There is for the year.
Additionally, we can get a day of week:
- getDay()
- Get the day of week, from (Sunday) to (Saturday). The first day is always Sunday, in some countries that’s not so, but can’t be changed.
All the methods above return the components relative to the local time zone.
There are also their UTC-counterparts, that return day, month, year and so on for the time zone UTC+0: getUTCFullYear(), getUTCMonth(), getUTCDay(). Just insert the right after .
If your local time zone is shifted relative to UTC, then the code below shows different hours:
Besides the given methods, there are two special ones that do not have a UTC-variant:
- getTime()
-
Returns the timestamp for the date – a number of milliseconds passed from the January 1st of 1970 UTC+0.
- getTimezoneOffset()
-
Returns the difference between UTC and the local time zone, in minutes:
7 Класс DateFormat
Помните, когда мы выводили дату на экран, отображалось что-то типа . Вроде бы все правильно, но это скорее отображение даты для программиста. А для пользователя хотелось бы отображать дату попонятнее. Что-нибудь типа .
И без года. Ну или с годом, если надо. В общем, хотелось бы отображать дату разными способами.
Для этого есть специальный класс — .
Пример:
Код |
---|
Вывод на экран |
Видите, что программа вывела на экран: . Совсем не то, что раньше.
А все дело в том, что мы отображали не сам объект , а специальную строку, полученную вызовом метода у объекта типа . Но ключевое здесь даже не это.
Когда объект создается, в него в виде параметров мы передаем строку . Вот в этой строке и зашифрован формат даты, который вы увидели в итоге на экране.
- MMM значит вывести название месяца, сокращенное до трех букв
- dd — вывести день месяца
- YYYY — вывести год, состоящий из четырех цифр
Если мы хотим вывести месяц в виде цифр, нужно вместо написать : получится строка . На экран будет выведено
Более детально мы разберём этот класс позднее.
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 ❯
Даты, Intl.DateTimeFormat
Синтаксис:
Первый аргумент – такой же, как и в , а в объекте мы можем определить, какие именно части даты показывать (часы, месяц, год…) и в каком формате.
Полный список свойств :
Свойство | Описание | Возможные значения | По умолчанию |
---|---|---|---|
Алгоритм подбора локали | , | ||
Алгоритм подбора формата | , | ||
Включать ли время в 12-часовом формате | — 12-часовой формат, — 24-часовой | ||
Временная зона | Временная зона, например | ||
День недели | , , | ||
Эра | , , | ||
Год | , | или | |
Месяц | , , , , | или | |
День | , | или | |
Час | , | ||
Минуты | , | ||
second | Секунды | , | |
Название таймзоны (нет в IE11) | , |
Все локали обязаны поддерживать следующие наборы настроек:
- weekday, year, month, day, hour, minute, second
- weekday, year, month, day
- year, month, day
- year, month
- month, day
- hour, minute, second
Если указанный формат не поддерживается, то настройка задаёт алгоритм подбора наиболее близкого формата: – по и – по умолчанию, на усмотрение окружения (браузера).
Использование:
Например:
Длинная дата, с настройками:
Только время:
Выращивание рыбы и раков, организация рыбалки
Хороший доход обеспечивает разведение рыбы или раков. Кстати, вложений для этого больших не требуется. К примеру, ракам нужен водоем с песчано-каменистым дном. Самое сложное в таком случае – устроить водоем. Нужно предусмотреть возможность обновления воды минимум дважды в месяц. А еще его следует разделить на части. Это необходимо для того, чтобы взрослые раки не поедали маленьких. Правда, быстро получить прибыль не получится, поскольку рак растет три года. Если разводить рыбу, то лучше всего остановиться на карпе или форели. Даже при снижении цены, рентабельность составит не ниже 10%.
Популярным сейчас стало предоставление возможности покупателю самостоятельно поймать рыбу. Для этого можно организовать платную рыбалку у своего водоема. Если рядом построить баню, мини-кафе, место для приготовления рыбы и мяса на гриле, место для ночевки, то получится полноценный центр отдыха, который могут обслуживать всего 2-3 человека, семья. Тому есть много примеров, найти которые можно по запросу «платная рыбалка в (наименование вашего края)». Оплате для получения заработка в деревне могут подлежать прокат беседок, снастей для рыбалки, мангалов, почасовая оплата бани, оплата банных принадлежностей, плата за ловлю рыбы, услуги по ее чистке и приготовлению и многое другое!
Главное — качественный сервис, трудолюбие и фантазия организатора! Найти клиентов можно через сайты объявлений, группы в соц.сетях, расстановку придорожных баннеров и указателей и просто сарафанное радио!
Объект 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), что прибавит к дате два дня. То же самое действует и
в отношении дней, минут, секунд, миллисекунд и месяцев.
НазадВперед
Итого
Объекты используются, чтобы взять данные из HTML-формы и отправить их с помощью или другого метода для работы с сетью.
Мы можем создать такой объект уже с данными, передав в конструктор HTML-форму – , или же можно создать объект вообще без формы и затем добавить к нему поля с помощью методов:
Отметим две особенности:
- Метод удаляет предыдущие поля с таким же именем, а – нет. В этом их единственное отличие.
- Чтобы послать файл, нужно использовать синтаксис с тремя аргументами, в качестве третьего как раз указывается имя файла, которое обычно, при , берётся из файловой системы.
Другие методы:
Вот и всё!
Итого
- Дата и время в JavaScript представлены объектом Date. Нельзя создать «только дату» или «только время»: объекты всегда содержат и то, и другое.
- Счёт месяцев начинается с нуля (да, январь – это нулевой месяц).
- Дни недели в также отсчитываются с нуля, что соответствует воскресенью.
- Объект самостоятельно корректируется при введении значений, выходящих за рамки допустимых. Это полезно для сложения/вычитания дней/месяцев/недель.
- Даты можно вычитать, и разность возвращается в миллисекундах. Так происходит, потому что при преобразовании в число объект становится таймстампом.
- Используйте для быстрого получения текущего времени в формате таймстампа.
Учтите, что, в отличие от некоторых других систем, в JavaScript таймстамп в миллисекундах, а не в секундах.
Порой нам нужно измерить время с большей точностью. Собственными средствами JavaScript измерять время в микросекундах (одна миллионная секунды) нельзя, но в большинстве сред такая возможность есть. К примеру, в браузерах есть метод performance.now(), возвращающий количество миллисекунд с начала загрузки страницы с точностью до микросекунд (3 цифры после точки):
В Node.js для этого предусмотрен модуль и ряд других способов. Технически почти любое устройство или среда позволяет добиться большей точности, просто её нет в объекте .
Форматирование и вывод дат
Во всех браузерах, кроме IE10-, поддерживается новый стандарт Ecma 402, который добавляет специальные методы для форматирования дат.
Это делается вызовом , в котором можно задать много настроек. Он позволяет указать, какие параметры даты нужно вывести, и ряд настроек вывода, после чего интерпретатор сам сформирует строку.
Пример с почти всеми параметрами даты и русским, затем английским (США) форматированием:
Вы сможете подробно узнать о них в статье Intl: интернационализация в JavaScript, которая посвящена этому стандарту.
Методы вывода без локализации:
, ,
Возвращают стандартное строчное представление, не заданное жёстко в стандарте, а зависящее от браузера. Единственное требование к нему – читаемость человеком. Метод возвращает дату целиком, и – только дату и время соответственно.
То же самое, что , но дата в зоне UTC.
Возвращает дату в формате ISO Детали формата будут далее. Поддерживается современными браузерами, не поддерживается IE8-.
Если хочется иметь большую гибкость и кросс-браузерность, то также можно воспользоваться специальной библиотекой, например Moment.JS или написать свою функцию форматирования.