Javascript объект date

Объект 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), что прибавит к дате два дня. То же самое действует и
в отношении дней, минут, секунд, миллисекунд и месяцев.

НазадВперед

Локаль

Локаль – первый и самый важный аргумент всех методов, связанных с интернационализацией.

Локаль описывается строкой из трёх компонентов, которые разделяются дефисом:

  1. Код языка.
  2. Код способа записи.
  3. Код страны.

На практике не всегда указаны три, обычно меньше:

  1. – русский язык, без уточнений.
  2. – английский язык, используемый в Англии ().
  3. – английский язык, используемый в США ().
  4. – китайский язык (), записываемый упрощённой иероглифической письменностью (), используемый в Китае.

Также через суффикс можно указать расширения локалей, например – тайский язык (), используемый в Таиланде (), с записью чисел тайскими буквами (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) .

Стандарт, который описывает локали – RFC 5464, языки описаны в IANA language registry.

Все методы принимают локаль в виде строки или массива, содержащего несколько локалей в порядке предпочтения.

Если локаль не указана или – берётся локаль по умолчанию, установленная в окружении (браузере).

– вспомогательная настройка, которую тоже можно везде указать, она определяет способ подбора локали, если желаемая недоступна.

У него два значения:

  • – означает простейший порядок поиска путём обрезания суффикса, например → → → локаль по умолчанию.
  • – использует встроенные алгоритмы и предпочтения браузера (или другого окружения) для выбора подходящей локали.

По умолчанию стоит .

Если локалей несколько, например то пытается подобрать наиболее подходящую локаль для первой из списка (китайская), если не получается – переходит ко второй (русской) и так далее. Если ни одной не нашёл, например на компьютере не совсем поддерживается ни китайский ни русский, то используется локаль по умолчанию.

Как правило, является здесь наилучшим выбором.

Синтаксис конструктора объекта

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, представляющее миллисекундный отрезок времени. Необязательный аргумент.

Summary

  • Date and time in JavaScript are represented with the Date object. We can’t create “only date” or “only time”: objects always carry both.
  • Months are counted from zero (yes, January is a zero month).
  • Days of week in are also counted from zero (that’s Sunday).
  • auto-corrects itself when out-of-range components are set. Good for adding/subtracting days/months/hours.
  • Dates can be subtracted, giving their difference in milliseconds. That’s because a becomes the timestamp when converted to a number.
  • Use to get the current timestamp fast.

Note that unlike many other systems, timestamps in JavaScript are in milliseconds, not in seconds.

Sometimes we need more precise time measurements. JavaScript itself does not have a way to measure time in microseconds (1 millionth of a second), but most environments provide it. For instance, browser has performance.now() that gives the number of milliseconds from the start of page loading with microsecond precision (3 digits after the point):

Node.js has module and other ways. Technically, almost any device and environment allows to get more precision, it’s just not in .

Время и таймеры

Функция —

Здесь мы кратко поговорим о функции обратного отсчёта, а также как выполнить код по прошествии некоторого времени (функция ):

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

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

Функция —

Кроме того, программа может выполнять код несколько раз с помощью функции :

Функция в выполняется 5 раз с задержкой в 2 секунды (2000 миллисекунд), после прерывается.

Даты, 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

Если указанный формат не поддерживается, то настройка задаёт алгоритм подбора наиболее близкого формата: – по и – по умолчанию, на усмотрение окружения (браузера).

Использование:

Например:

Длинная дата, с настройками:

Только время:

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()

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()

Создание объекта Date с указанием нужной даты

Достаточно часто нам нужна именно сегодняшняя дата. Однако бывает необходимо получить дату из прошлого или из будущего, например, ваш день рождения (скажем, это 23 мая 1980 года) или 1 января следующего года, как в примере выше.  Давайте получим эти даты:

Объявление переменных с конкретной датой

JavaScript

let birthday = new Date(’05/23/1980′); //’месяц/число/год’
document.write(‘<p> <strong>birthday (23 мая 1980г.): </strong>’+ birthday +'</p>’);

let octDate= new Date(‘10.22.2021′);//’месяц.число.год’ //!!!не во всех браузерах работает
document.write(‘<p> <strong>octDate (22 октября 2021г.): </strong>’+ octDate +'</p>’);

let new_year= new Date(‘2021-01-01′);//’год-месяц-число’
document.write(‘<p> <strong>new_year (1 января 2021г.): </strong>’+new_year+'</p>’);

let war = new Date(‘June 22, 1941 04:01:00’);// месяц сокр. на англ. яз число, год
document.write(‘<p><strong> war (начало ВОВ)</strong>: ‘+war+'</p>’);

let learnDate = new Date(2020, 8, 1, 8, 0, 0); //год, месяц (начало — с 0 — январь), число, часы, минуты, секунды
document.write(‘<p><strong> learnDate (1 сентября 2020г.):</strong> ‘+learnDate +'</p>’);

let augDate = new Date(1598731320395);
document.write(‘<p><strong> augDate (дата в августе 2020г.):</strong> ‘+augDate +'</p>’);

let date1 = new Date(’12 22 20 15:00′);//месяц (от 1 до 12) день год часы:минуты:секунды
document.write(‘<p><strong> date1 (22 декабря 2020г.):</strong> ‘+date1 +'</p>’);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

let birthday=newDate(’05/23/1980′);//’месяц/число/год’

document.write(‘<p> <strong>birthday (23 мая 1980г.): </strong>’+birthday+'</p>’);

let octDate=newDate(‘10.22.2021′);//’месяц.число.год’ //!!!не во всех браузерах работает

document.write(‘<p> <strong>octDate (22 октября 2021г.): </strong>’+octDate+'</p>’);

let new_year=newDate(‘2021-01-01′);//’год-месяц-число’

document.write(‘<p> <strong>new_year (1 января 2021г.): </strong>’+new_year+'</p>’);

let war=newDate(‘June 22, 1941 04:01:00’);// месяц сокр. на англ. яз число, год

document.write(‘<p><strong> war (начало ВОВ)</strong>: ‘+war+'</p>’);

let learnDate=newDate(2020,8,1,8,,);//год, месяц (начало — с 0 — январь), число, часы, минуты, секунды

document.write(‘<p><strong> learnDate (1 сентября 2020г.):</strong> ‘+learnDate+'</p>’);

let augDate=newDate(1598731320395);

document.write(‘<p><strong> augDate (дата в августе 2020г.):</strong> ‘+augDate+'</p>’);

let date1=newDate(’12 22 20 15:00′);//месяц (от 1 до 12) день год часы:минуты:секунды

document.write(‘<p><strong> date1 (22 декабря 2020г.):</strong> ‘+date1+'</p>’);

Давайте посмотрим на вывод дат:

Метод Date.parse()

Для того чтобы вывести количество миллисекунд с 01.01.1970 до указанной даты можно использовать метод . Если вы задали дату неверно, как во второй строке, то метод вернет , т.к. здесь последовательность написания чисел в дате так же важна, как и при ее инициализации.

Date.parse()

JavaScript

Date.parse(’10 06 2021′); // месяц день год 06.10.2021
Date.parse(’10-06-2021′); // ошибка — неверный формат даты
Date.parse(‘2021-06-10′); // год-месяц-день 10.06.2021
Date.parse(’10/06/2021’); // месяц/день/год 06.10.2021

1
2
3
4

Date.parse(’10 06 2021′);// месяц день год  06.10.2021

Date.parse(’10-06-2021′);// ошибка — неверный формат даты

Date.parse(‘2021-06-10’);// год-месяц-день 10.06.2021

Date.parse(’10/06/2021′);// месяц/день/год  06.10.2021

Выводим данные, полученные методом :

Преобразование даты в строку и её форматирование

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

К первой группе можно отнести методы, которые выполняют это так, как это определено в браузере: , , , .

Метод возвращает полное представление даты, – только дату, – только время, – полное представление даты, но в часовом поясе UTC+0.

Т.к. строковые представления, которые должны возвращать эти методы чётко не определены в стандарте, то они могут отличаться в разных браузерах.

Ко второй группе можно отнести методы с учётом часового пояса и языка локального компьютера: – дату и время, – только дату, – только время.

Методы , , имеют 2 необязательных параметра. Первый параметр предназначен для явного указания локали, второй — для задания опций форматирования.

Если локаль явно не установлена или , то браузер берёт ту, которую он имеет по умолчанию.

Кроме этого, в JavaScript имеется ещё метод . Он возвращает строку, содержащую дату и время в формате ISO ().

Пример:

// создадим дату 15.04.2019 18:43:59 (в часовом поясе пользователя)
var newDate = new Date(2019, 03, 15, 18, 43, 59);

console.log(newDate.toString()); // Mon Apr 15 2019 18:43:59 GMT+1000 (Владивосток, стандартное время)
console.log(newDate.toDateString()); // Mon Apr 15 2019
console.log(newDate.toTimeString()); // 18:43:59 GMT+1000 (Владивосток, стандартное время)
console.log(newDate.toLocaleString()); // 15.04.2019, 18:43:59
console.log(newDate.toLocaleDateString()); // 15.04.2019
console.log(newDate.toLocaleTimeString()); // 18:43:59
console.log(newDate.toUTCString()); // Mon, 15 Apr 2019 08:43:59 GMT
console.log(newDate.toISOString()); // 2019-04-15T08:43:59.000Z

Modifying the Date with set

For all the methods that we learned about above, there is a corresponding method. Where is used to retrieve a specific component from a date, is used to modify components of a date. Below is a detailed chart of the methods of the object.

Date/Time Method Range Example
Year YYYY 1970
Month 0-11 0 = January
Day (of the month) 1-31 1 = 1st of the month
Day (of the week) 0-6 0 = Sunday
Hour 0-23 0 = midnight
Minute 0-59
Second 0-59
Millisecond 0-999
Timestamp Milliseconds since Epoch time

We can use these methods to modify one, more, or all of the components of a date. For example, we can change the year of our variable from above to be instead of .

harryPotter.js

We see in the example above that when we call the variable we receive the new year as part of the output.

The built-in methods beginning with let us modify different parts of a object.

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 представлены объектом Date. Нельзя создать «только дату» или «только время»: объекты всегда содержат и то, и другое.
  • Счёт месяцев начинается с нуля (да, январь – это нулевой месяц).
  • Дни недели в также отсчитываются с нуля, что соответствует воскресенью.
  • Объект самостоятельно корректируется при введении значений, выходящих за рамки допустимых. Это полезно для сложения/вычитания дней/месяцев/недель.
  • Даты можно вычитать, и разность возвращается в миллисекундах. Так происходит, потому что при преобразовании в число объект становится таймстампом.
  • Используйте для быстрого получения текущего времени в формате таймстампа.

Учтите, что, в отличие от некоторых других систем, в JavaScript таймстамп в миллисекундах, а не в секундах.

Порой нам нужно измерить время с большей точностью. Собственными средствами JavaScript измерять время в микросекундах (одна миллионная секунды) нельзя, но в большинстве сред такая возможность есть. К примеру, в браузерах есть метод performance.now(), возвращающий количество миллисекунд с начала загрузки страницы с точностью до микросекунд (3 цифры после точки):

В Node.js для этого предусмотрен модуль и ряд других способов. Технически почти любое устройство или среда позволяет добиться большей точности, просто её нет в объекте .

Форматирование и вывод дат

Во всех браузерах, кроме IE10-, поддерживается новый стандарт Ecma 402, который добавляет специальные методы для форматирования дат.

Это делается вызовом , в котором можно задать много настроек. Он позволяет указать, какие параметры даты нужно вывести, и ряд настроек вывода, после чего интерпретатор сам сформирует строку.

Пример с почти всеми параметрами даты и русским, затем английским (США) форматированием:

Вы сможете подробно узнать о них в статье Intl: интернационализация в JavaScript, которая посвящена этому стандарту.

Методы вывода без локализации:

, ,
Возвращают стандартное строчное представление, не заданное жёстко в стандарте, а зависящее от браузера. Единственное требование к нему – читаемость человеком. Метод возвращает дату целиком, и – только дату и время соответственно.

То же самое, что , но дата в зоне UTC.

Возвращает дату в формате ISO Детали формата будут далее. Поддерживается современными браузерами, не поддерживается IE8-.

Если хочется иметь большую гибкость и кросс-браузерность, то также можно воспользоваться специальной библиотекой, например Moment.JS или написать свою функцию форматирования.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector