Javascript объект date

Підтримка веб-переглядачами

Таблиця сумісності на цій сторінці створена зі структурованих даних. Якщо ви хочете долучитися до розробки цих даних, пропонуйте нам свої pull request до репозиторію https://github.com/mdn/browser-compat-data.

Update compatibility data on GitHub

Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
Chrome
Full support

1
Edge
Full support

12
Firefox
Full support

1
IE
Full support

3
Opera
Full support

3
Safari
Full support

1
WebView Android
Full support

1
Chrome Android
Full support

18
Firefox Android
Full support

4
Opera Android
Full support

10.1
Safari iOS
Full support

1
Samsung Internet Android
Full support

1.0
nodejs
Full support

0.1.100

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()
cos()
cosh()
E
exp()
floor()
LN2
LN10
log()
LOG2E
LOG10E
max()
min()
PI
pow()
random()
round()
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()

Приклади

Кілька шляхів створення примірника

Заувага: Розбір рядків з датою (часом) за допомогою конструктора (або метода , що є одне й те саме) є рішуче небажаним через наявні розбіжності поміж переглядачами.

Наведені приклади унаочнюють декілька шляхів створення об’єктів дати:

var today = new Date();
var birthday = new Date('December 17, 1995 03:24:00');
var birthday = new Date('1995-12-17T03:24:00');
var birthday = new Date(1995, 11, 17);
var birthday = new Date(1995, 11, 17, 3, 24, 0);

Рік менший від сотні обертається на 1900-1999

var date = new Date(98, 1);  // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)

// Застарілий метод, тут 98 також обертається на 1998
date.setYear(98);            // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)

date.setFullYear(98);        // Sat Feb 01 0098 00:00:00 GMT+0000 (BST)

Обчислення тривалості

У наведених прикладах показано, як з’ясувати час (в мілісекундах), що розділяє дві дати у JavaScript.

Через різну тривалість доби (внаслідок переходів між літнім та зимовим часом), місяця та року вираження обчисленої тривалості в одиницях більших за годину є дещо ускладненим і потребує вдумливого дослідження.

Найпростіший спосіб за допомогою метода :

// Запам'ятаймо початок
var start = Date.now();

// Тут якісь обчислення, тривалість яких слід з'ясувати
doSomethingForALongTime();

// Запам'ятаймо кінець
var end = Date.now();

// Обчислімо тривалість — різницю між кінцем та початком (у мілісекундах)
var elapsed = end - start;

Тут майже те саме, але з використанням об’єктів класу та метода :

// Запам'ятаймо початок
var start = new Date();

// Тут якісь обчислення, тривалість яких слід з'ясувати
doSomethingForALongTime();

// Запам'ятаймо кінець
var end = new Date();

// Обчислімо тривалість — різницю між кінцем та початком (у мілісекундах)
var elapsed = end.getTime() - start.getTime();

В цьому прикладі функція є посередником. Вона викликає передану їй функцію , обчислює тривалість її виконання (виводить у консоль) та вертає те, що повернула :

function evaluateFunctionDuration(func) {
  var begin = Date.now(),
      value = func(),
      end = Date.now();

  console.log('Тривалість: ' + (end - begin) + ' ms');
  return value;
}

var value = evaluateFunctionDuration(function() { … });

UTC Date Methods

UTC date methods are used for working with UTC dates (Universal Time Zone dates):

Method Description
getUTCDate() Same as getDate(), but returns the UTC date
getUTCDay() Same as getDay(), but returns the UTC day
getUTCFullYear() Same as getFullYear(), but returns the UTC year
getUTCHours() Same as getHours(), but returns the UTC hour
getUTCMilliseconds() Same as getMilliseconds(), but returns the UTC milliseconds
getUTCMinutes() Same as getMinutes(), but returns the UTC minutes
getUTCMonth() Same as getMonth(), but returns the UTC month
getUTCSeconds() Same as getSeconds(), but returns the UTC seconds

Синтаксис

Параметры

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

Необязательный параметр. Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента смотрите на . Разрешены следующие ключи расширения Unicode:

Используемая система нумерации. Возможные значения включают в себя: , , , , , , , , , , , , , , , , , , , , , .
Используемый календарь. Возможные значения включают в себя: , , , , , , , , , , , , , .

Необязательный параметр. Объект с некоторыми или всеми из следующих свойств:

Используемый алгоритм сопоставления локалей. Возможными значениями являются и ; значением по умолчанию является . Информацию по этой опции смотрите на .
Используемый часовой пояс. Единственным значением, которые реализации обязаны распознавать, является ; значением по умолчанию является часовой пояс по умолчанию среды выполнения. Реализации также могут распознавать названия часовых поясов из базы данных часовых поясов IANA, например , или .
Определяет, использовать ли 12-ти часовой формат времени (в противовес 24-х часовому). Возможными значениями являются и ; значение по умолчанию зависит от локали.
Используемый алгоритм сопоставления форматов. Возможными значениями являются и ; значением по умолчанию является . Смотрите следующий абзац, объясняющий, как использовать это свойство.

Следующие свойства описывают компоненты даты/времени, используемые в форматированном выводе, и их желаемые представления. Реализации должны поддерживать, как минимум, следующие подмножества:

  • , , , , , ,
  • , , ,
  • , ,
  • ,
  • ,
  • , ,
  • ,

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

Представление дней недели. Возможными значениями являются , и .
Представление эр. Возможными значениями являются , и .
Представление лет. Возможными значениями являются и .
Представление месяцев. Возможными значениями являются , , , и .
Представление дней. Возможными значениями являются и .
Представление часов. Возможными значениями являются и .
Представление минут. Возможными значениями являются и .
Представление секунд. Возможными значениями являются и .
Представление названий часовых поясов. Возможными значениями являются и .

Значением по умолчанию для каждой компоненты даты-времени является , однако, если все свойства , и равны , то их значения предполагаются равными .

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()
cos()
cosh()
E
exp()
floor()
LN2
LN10
log()
LOG2E
LOG10E
max()
min()
PI
pow()
random()
round()
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()

Получение компонентов даты

Существуют методы получения года, месяца и т.д. из объекта :

getFullYear()
Получить год (4 цифры)
getMonth()
Получить месяц, от 0 до 11.
getDate()
Получить день месяца, от 1 до 31, что несколько противоречит названию метода.
getHours(), getMinutes(), getSeconds(), getMilliseconds()
Получить, соответственно, часы, минуты, секунды или миллисекунды.

Никакого . Только

Многие интерпретаторы JavaScript реализуют нестандартный и устаревший метод , который порой возвращает год в виде двух цифр. Пожалуйста, обходите его стороной. Если нужно значение года, используйте .

Кроме того, можно получить определённый день недели:

getDay()
Вернуть день недели от (воскресенье) до (суббота). Несмотря на то, что в ряде стран за первый день недели принят понедельник, в JavaScript начало недели приходится на воскресенье.

Все вышеперечисленные методы возвращают значения в соответствии с местным часовым поясом.

Однако существуют и их UTC-варианты, возвращающие день, месяц, год для временной зоны UTC+0: getUTCFullYear(), getUTCMonth(), getUTCDay(). Для их использования требуется после подставить .

Если ваш местный часовой пояс смещён относительно UTC, то следующий код покажет разные часы:

Помимо вышеприведённых методов, существуют два особых метода без UTC-варианта:

getTime()

Для заданной даты возвращает таймстамп – количество миллисекунд, прошедших с 1 января 1970 года UTC+0.

getTimezoneOffset()

Возвращает разницу в минутах между местным часовым поясом и UTC:

Бенчмаркинг

Будьте внимательны, если хотите точно протестировать производительность функции, которая зависит от процессора.

Например, сравним две функции, вычисляющие разницу между двумя датами: какая сработает быстрее?

Подобные вычисления, замеряющие производительность, также называют «бенчмарками» (benchmark).

Обе функции делают буквально одно и то же, только одна использует явный метод для получения даты в миллисекундах, а другая полагается на преобразование даты в число. Результат их работы всегда один и тот же.

Но какая функция быстрее?

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

Проведём измерения:

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

Замечательно, это уже что-то. Но до хорошего бенчмарка нам ещё далеко.

Представьте, что при выполнении процессор параллельно делал что-то ещё, также потребляющее ресурсы. А к началу выполнения он это уже завершил.

Достаточно реалистичный сценарий в современных многопроцессорных операционных системах.

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

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

Например, так:

Современные интерпретаторы JavaScript начинают применять продвинутые оптимизации только к «горячему коду», выполняющемуся несколько раз (незачем оптимизировать то, что редко выполняется). Так что в примере выше первые запуски не оптимизированы должным образом. Нелишним будет добавить предварительный запуск для «разогрева»:

Будьте осторожны с микробенчмарками

Современные интерпретаторы JavaScript выполняют множество оптимизаций. Они могут повлиять на результаты «искусственных тестов» по сравнению с «нормальным использованием», особенно если мы тестируем что-то очень маленькое, например, работу оператора или встроенной функции. Поэтому если хотите серьёзно понять производительность, пожалуйста, изучите, как работают интерпретаторы JavaScript. И тогда вам, вероятно, уже не понадобятся микробенчмарки.

Отличный набор статей о V8 можно найти на http://mrale.ph.

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 minimal precision is 1 ms (1/1000 sec):

Создание

Для создания нового объекта нужно вызвать конструктор с одним из следующих аргументов:

Без аргументов – создать объект с текущими датой и временем:

Создать объект с временем, равным количеству миллисекунд (тысячная доля секунды), прошедших с 1 января 1970 года UTC+0.

Целое число, представляющее собой количество миллисекунд, прошедших с начала 1970 года, называется таймстамп (англ. timestamp).

Это – легковесное численное представление даты. Из таймстампа всегда можно получить дату с помощью и преобразовать существующий объект в таймстамп, используя метод (см. ниже).

Датам до 1 января 1970 будут соответствовать отрицательные таймстампы, например:

Если аргумент всего один, и это строка, то из неё «прочитывается» дата. Алгоритм разбора – такой же, как в , который мы рассмотрим позже.

Создать объект с заданными компонентами в местном часовом поясе. Обязательны только первые два аргумента.

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

Например:

Минимальная точность – 1 мс (1/1000 секунды):

Khả năng tương thích trình duyệt

We’re converting our compatibility data into a machine-readable JSON format.
This compatibility table still uses the old format,
because we haven’t yet converted the data it contains.

  • Desktop
  • Mobile
Đặc tính Chrome Firefox (Gecko) Internet Explorer Opera Safari
Hỗ trợ cơ bản (Yes) (Yes) (Yes) (Yes) (Yes)
Đặc tính Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Hỗ trợ cơ bản (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

Một số trình duyệt có thể gặp sự cố khi phân tích ngày tháng: 3/14/2012 blog from danvk Comparing FF/IE/Chrome on Parsing Date Strings.

ISO8601 Date Format is not supported Trong Internet Explorer 8, và các phiên bản khác có thể có vấn đề chuyển đổi ngày tháng.

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

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

Adblock
detector