Date() constructor

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.

Объект Date

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

JavaScript оперирует датами во многом аналогично языку Java. Для работы с датой эти два языка имеют множество одинаковых методов, и оба они хранят даты как количество миллисекунд, прошедших с 00:00:00 1 Января 1970 года.

Период значений, которые может принимать Data, простирается от -100 000 000 до100 000 000 дней, относительно 1 Января 1970 года.

Чтобы создать свой экземпляр объекта :

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

Вызов как функции, без ключевого слова  возвращает текущую дату и время в виде текстовой строки.

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

  • Пусто: создаёт текущую дату и время. Пример: .
  • Текстовая строка, содержащая дату и время в следующем формате: «Месяц день, год часы:минуты:секунды». Например: . Если не указать секунды, минуты или часы, то их значение будет принято за 0.
  • Набор целочисленных значений для года, месяца и дня. Например: .
  • Набор целочисленных значений для года, месяца, дня, часов, минут и секунд. Например: .
new Date().toLocaleString('ru',
  {
    day: 'numeric',
    month: 'long',
    year: 'numeric'
  });
// текущая дата в формате: '10 января 2019 г.'

Методы объекта  для работы с датой и временем делятся на следующие категории:

  • «set» методы, служат для установки параметров объекта .
  • «get» методы, служат для получения параметров объекта .
  • «to» методы, служат для получения значения объекта  в текстовом виде.
  • «parse» и UTC методы, служат для распознавания дат и времени из текстового формата.

При помощи методов групп «get» и»set», вы можете получить и установить значения секунд, минут, часов, дня месяца, дня недели, месяца и года по отдельности. Отдельно выделим метод , который возвращает день недели, однако соответствующего ему метода  не существует, потому-что день недели высчитывается автоматически. Все эти методы используют в своей работе целочисленные значения по следующим правилам:

  • Секунды и минуты: от 0 до 59
  • Часы: от 0 до 23
  • Дни недели: от 0 (Воскресенье) до 6 (Суббота)
  • Дни месяца: от 1 до 31
  • Месяцы: от 0 (Январь) до 11 (Декабрь)
  • Год: год относительно 1900 года.

Например, предположим, что вы определили дату следующим образом:

Тогда  вернёт 11, а  вернёт 1995.

Методы  и  полезны при сравнении дат. Метод  возвращает количество миллисекунд, прошедших с 00:00:00 1 Января, 1970 года.

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

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

Метод  полезен для присвоения значений существующим объектам  из текстового формата. Например, следующий код использует методы  и  чтобы установить значение переменной :

В следующем примере приведена функция 

Первым делом, функция JSClock создаёт новый объект , названный ; так как объект создаётся баз параметров, переменная содержит текущую дату и время. Затем вызываются методы , и , чтобы установить значения переменным , и .

Следующие четыре выражения строят текстовую строку на основе time. Первое из них создаёт переменную , присваивая ей значение при помощи условия; Если  больше чем 12, то (), иначе просто  В случае же, когда  равно 0, берётся фиксированное значение «12».

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

В завершение всего, последнее условное выражение добавляет строку «P.M.» к переменной  если  равно или больше 12, иначе, добавляется строка «A.M.».

  • « Предыдущая статья
  • Следующая статья »

Синтаксис

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

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

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

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

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

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

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

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

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

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

Локаль

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создание объекта 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

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

Примеры

Если переменная содержит существующий объект , она может быть установлена в 9 августа 1995 года (по местному времени) следующим способом:

Ещё несколько примеров разбора нестандартных строк с датами:

Вернёт в часовом поясе GMT-0300, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то часовой пояс по умолчанию равен местному часовому поясу.

Вернёт вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).

Вернёт в часовом поясе GMT-0300, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то часовой пояс по умолчанию равен местному часовому поясу.

Вернёт вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).

Вернёт в часовом поясе GMT-0400, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то используется местный часовой пояс.

Вернёт вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).

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 ❯

Использование Библиотеки Moment.js

Moment.js

Рассмотрим несколько примеров ее использования.

Сначала устанавливаем пакет с помощью команды .

1

2import moment from ‘moment’;

3

4

5const date =moment();

6

7

8

9const date =moment('September 20, 2020');

10

11

12const date =moment().format('MM Do, YYYY');

Список опций форматирования доступен в документации библиотеки (пара примеров):

  • — 2017-12-14
  • — 16:34:10

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

1moment('2020-06-20').fromNow();

2

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

Числа

В JavaScript все числа являются числами двойной точности в соответствии с 64-битным двоичным форматом IEEE 754 (т.е. числами, принадлежащими диапазону между -(253 -1) и 253 -1). Целые числа не рассматриваются как отдельный тип чисел. В дополнение к числам с плавающей запятой, к числовому типу данных относятся также три символьные величины: , , и (не-число). В разделе типы и структуры данных в JavaScript числовой тип данных описан в контексте с другими примитивными типами в JavaScript.

Вы можете использовать четыре типа числовых литералов: десятичный, двоичный, восьмеричный и шестнадцатеричный.

Обратите внимание, что десятичные литералы могут начинаться с нуля () за которым следует другая десятичная цифра, но если следующая за нулём цифра меньше 8, то число обрабатывается как восьмеричное. Синтаксис двоичных чисел использует ведущий 0 за которым следует латинская буква «B» в верхнем или нижнем регистре ( or )

Если цифры после  не являются 0 или 1, то будет сгенерированно  с сообщением: «Missing binary digits after 0b»

Синтаксис двоичных чисел использует ведущий 0 за которым следует латинская буква «B» в верхнем или нижнем регистре ( or ). Если цифры после  не являются 0 или 1, то будет сгенерированно  с сообщением: «Missing binary digits after 0b».

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

Синтаксис  шестнадцатеричных чисел использует ведущий 0 за которым следует латинская буква «X» в верхнем или нижнем регистре ( or ). Если цифры после 0x не входят в диапазон (0123456789ABCDEF),  то будет сгенерированно  с сообщением: «Identifier starts immediately after numeric literal».

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

В JavaScript для получения отдельных компонентов даты и времени предназначены следующие методы:

  • – возвращает год, состоящий из 4 чисел;
  • – возвращает месяц в формате числа от 0 до 11 (0 – январь, 1 – февраль, 2 – март, …, 11 – декабрь);
  • – возвращает число месяца от 1 до 31;
  • – возвращает количество часов от 0 до 23;
  • – возвращает количество минут от 0 до 59;
  • – возвращает количество секунд от 0 до 59;
  • – возвращает количество миллисекунд от 0 до 999.

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

Пример:

// создадим дату 11.11.2019 00:00 по UTC
var newDate = new Date(Date.UTC(2019,11,11));

// получим компоненты даты, если на устройстве пользователя местное время равно UTC+10:00
newDate.getFullYear(); //2019
newDate.getMonth(); // 10
newDate.getDate(); // 11
newDate.getHours(); // 10
newDate.getMinutes(); // 0
newDate.getSeconds(); // 0
newDate.getMilliseconds(); // 0

Пример, в котором поприветствуем пользователя в зависимости от того какой сейчас у него интервал времени:

// получим текущее время пользователя и компоненты этого времени
var 
  now = new Date(),
  hour = now.getHours(),
  minute = now.getMinutes(),
  second = now.getSeconds(),
  message = '';

// определим фразу приветствия в зависимости от местного времени пользователя 
if (hour <= 6) {
  message = 'Доброе время суток';
} else if (hour <= 12) {
  message = 'Доброе утро';
} else if (hour <= 18) {
  message = 'Добрый день';
} else {
  message = 'Добрый вечер';
}

// выполним форматирование времени с использованием тернарного оператора
minute = (minute < 10) ? '0' + minute : minute;
second = (second < 10) ? '0' + second : second;
hour = (hour < 10) ? '0' + hour : hour;

message += ', сейчас ' + hour + ':' + minute + ':' + second;

// выведем приветствие и время в консоль
console.log(message); // Добрый вечер, сейчас 22:50:39

В этом примере вывод времени в нужном формате осуществлён с использованием тернарного оператора.

В JavaScript имеются аналоги этих методов для получения отдельных компонентов даты и времени для часового пояса UTC+0. Эти методы называются аналогично, но с добавленным «UTC» после «get»: , , , , , , .

Получить номер дня недели в JavaScript можно с помощью метода .

Данный метод возвращает число от 0 до 6 (0 – воскресенье, 1 – понедельник, …, 6 – суббота).

Пример, в котором переведём день недели из числового в строковое представление:

var days =;

// получим текущую дату
var now = new Date();
// выведем в консоль день недели
console.log('Сегодня ' + days);

Получить количество миллисекунд прошедших с 01.01.1970 00:00:00 UTC в JavaScript можно с помощью метода .

Узнать разницу (в минутах) между часовым поясом локального устройства и UTC в JavaScript можно с помощью метода .

Методы объекта FormData

С помощью указанных ниже методов мы можем изменять поля в объекте :

  • – добавляет к объекту поле с именем и значением ,
  • – добавляет поле, как будто в форме имеется элемент , третий аргумент устанавливает имя файла (не имя поля формы), как будто это имя из файловой системы пользователя,
  • – удаляет поле с заданным именем ,
  • – получает значение поля с именем ,
  • – если существует поле с именем , то возвращает , иначе

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

Ещё существует метод , его синтаксис такой же, как у . Разница в том, что удаляет все уже имеющиеся поля с именем и только затем добавляет новое. То есть этот метод гарантирует, что будет существовать только одно поле с именем , в остальном он аналогичен :

  • ,
  • .

Поля объекта можно перебирать, используя цикл :

Browser compatibility

BCD tables only load in the browser

  • Firefox 49 changed the parsing of 2-digit years to be aligned with the Google Chrome
    browser instead of Internet Explorer. Now, 2-digit years that are less than
    are parsed as 21st century years. For example,
    , previously parsed as April 16, 1917, will be April 16, 2017
    now. To avoid any interoperability issues or ambiguous years, it is recommended to use
    the ISO 8601 format like «» (bug 1265136).
  • Google Chrome will accept a numerical string as a valid
    parameter. This means that, for instance, while
    evaluates to in Firefox, it
    evaluates to in Google Chrome because «» is
    interpreted as the first of January 2042.

Функции даты и времени

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

Функция Описание
ADDDATE() Добавляет дату.
ADDTIME() Добавляет время.
CONVERT_TZ() Конвертирует из одного часового пояса в другой.
CURDATE() Возвращает текущую дату.
CURTIME() Возвращает текущее системное время.
DATE_ADD() Добавляет одну дату к другой.
MySQL DATE FORMAT () Задает указанный формат даты.
DATE() Извлекает часть даты из даты или выражения дата-время.
DATEDIFF() Вычитает одну дату из другой.
DAYNAME() Возвращает день недели.
DAYOFMONTH() Возвращает день месяца (1-31).
DAYOFWEEK() Возвращает индекс дня недели из аргумента.
DAYOFYEAR() Возвращает день года (1-366).
EXTRACT Извлекает часть даты.
FROM_DAYS() Преобразует номер дня в дату.
FROM_UNIXTIME() Задает формат даты в формате UNIX.
MySQL DATE_SUB() Вычитает одну дату из другой.
HOUR() Извлекает час.
LAST_DAY Возвращает последний день месяца для аргумента.
MAKEDATE() Создает дату из года и дня года.
MAKETIME () Возвращает значение времени.
MICROSECOND() Возвращает миллисекунды из аргумента.
MINUTE() Возвращает минуты из аргумента.
MONTH() Возвращает месяц из переданной даты.
MONTHNAME() Возвращает название месяца.
NOW() Возвращает текущую дату и время.
PERIOD_ADD() Добавляет интервал к месяцу-году.
PERIOD_DIFF() Возвращает количество месяцев между двумя периодами.
QUARTER() Возвращает четверть часа из переданной даты в качестве аргумента.
SEC_TO_TIME() Конвертирует секунды в формат ‘ЧЧ:MM:СС’.
SECOND() Возвращает секунду (0-59).
MySQL STR TO DATE () Преобразует строку в дату.
SUBTIME() Вычитает время.
SYSDATE() Возвращает время, в которое была выполнена функция.
TIME_FORMAT() Задает формат времени.
TIME_TO_SEC() Возвращает аргумент, преобразованный в секунды.
TIME() Выбирает часть времени из выражения, передаваемого в качестве аргумента.
TIMEDIFF() Вычитает время.
TIMESTAMP() С одним аргументом эта функция возвращает дату или выражение дата-время. С двумя аргументами возвращается сумма аргументов.
TIMESTAMPADD() Добавляет интервал к дате-времени.
TIMESTAMPDIFF() Вычитает интервал из даты — времени.
TO_DAYS() Возвращает аргумент даты, преобразованный в дни.
UNIX_TIMESTAMP() Извлекает дату-время в формате UNIX в формат, принимаемый MySQL.
UTC_DATE() Возвращает текущую дату по универсальному времени (UTC).
UTC_TIME() Возвращает текущее время по универсальному времени (UTC).
UTC_TIMESTAMP() Возвращает текущую дату-время по универсальному времени (UTC).
WEEK() Возвращает номер недели.
WEEKDAY() Возвращает индекс дня недели.
WEEKOFYEAR() Возвращает календарную неделю даты (1-53).
YEAR() Возвращает год.
YEARWEEK() Возвращает год и неделю.

Вы можете поэкспериментировать с этими функциями MySQL date format, даже не занося никаких данных в таблицу. Например:

mysql> SELECT NOW();

+---------------------+
| NOW()               |
+---------------------+
| 2007-10-23 11:46:31 |
+---------------------+
1 row in set (0.00 sec)

Вы можете попробовать сочетание нескольких функций в одном запросе (например, чтобы найти день недели):

mysql> SELECT MONTHNAME(NOW());

+------------------+
| MONTHNAME(NOW()) |
+------------------+
| October |
+------------------+
1 row in set (0.00 sec)

Примеры

При базовом использовании без указания локали возвращается строка, отформатированная в соответствии с локалью и опциями по умолчанию.

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

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

Результат, предоставляемый методом , может быть настроен с помощью аргумента :

JS Tutorial

JS HOMEJS IntroductionJS Where ToJS OutputJS StatementsJS SyntaxJS CommentsJS VariablesJS LetJS ConstJS OperatorsJS ArithmeticJS AssignmentJS Data TypesJS FunctionsJS ObjectsJS EventsJS StringsJS String MethodsJS String SearchJS String TemplatesJS NumbersJS Number MethodsJS ArraysJS Array MethodsJS Array SortJS Array IterationJS Array ConstJS DatesJS Date FormatsJS Date Get MethodsJS Date Set MethodsJS MathJS RandomJS BooleansJS ComparisonsJS ConditionsJS SwitchJS Loop ForJS Loop For InJS Loop For OfJS Loop WhileJS BreakJS IterablesJS SetsJS MapsJS TypeofJS Type ConversionJS BitwiseJS RegExpJS ErrorsJS ScopeJS HoistingJS Strict ModeJS this KeywordJS Arrow FunctionJS ClassesJS JSONJS DebuggingJS Style GuideJS Best PracticesJS MistakesJS PerformanceJS Reserved Words

Retrieving the Date with get

Once we have a date, we can access all the components of the date with various built-in methods. The methods will return each part of the date relative to the local timezone. Each of these methods starts with , and will return the relative number. Below is a detailed table 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

Let’s make a new date, based on July 31, 1980, and assign it to a variable.

harryPotter.js

Now we can use all our methods to get each date component, from year to millisecond.

getDateComponents.js

Sometimes it may be necessary to extract only part of a date, and the built-in methods are the tool you will use to achieve this.

For an example of this, we can test the current date against the day and month of October 3rd to see whether it’s October 3rd or not.

oct3.js

Since, at the time of writing, it’s not October 3rd, the console reflects that.

The built-in methods that begin with allow us to access date components that return the number associated with what we are retrieving from the instantiated object.

Итого

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

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

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

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

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

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

Adblock
detector