Как сделать сегодняшнюю дату js

Обновлено: 07.07.2024

Для работы с датой и временем в JavaScript используются объекты Date.

Создание

Для создания нового объекта типа Date используется один из синтаксисов:

new Date() Создает объект Date с текущей датой и временем:

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

new Date(datestring) Если единственный аргумент – строка, используется вызов Date.parse (см. далее) для чтения даты из неё.

new Date(year, month, date, hours, minutes, seconds, ms) Дату можно создать, используя компоненты в местной временной зоне. Для этого формата обязательны только первые два аргумента. Отсутствующие параметры, начиная с hours считаются равными нулю, а date – единице.

  • Год year должен быть из 4 цифр.
  • Отсчет месяцев month начинается с нуля 0.

Дата задана с точностью до миллисекунд:

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

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

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

Некоторые браузеры реализуют нестандартный метод getYear() . Где-то он возвращает только две цифры из года, где-то четыре. Так или иначе, этот метод отсутствует в стандарте JavaScript. Не используйте его. Для получения года есть getFullYear() .

Дополнительно можно получить день недели:

getDay() Получить номер дня в неделе. Неделя в JavaScript начинается с воскресенья, так что результат будет числом от 0(воскресенье) до 6(суббота).

Все методы, указанные выше, возвращают результат для местной временной зоны.

Существуют также UTC-варианты этих методов, возвращающие день, месяц, год и т.п. для зоны GMT+0 (UTC): getUTCFullYear() , getUTCMonth() , getUTCDay() . То есть, сразу после "get" вставляется "UTC" .

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

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

getTime() Возвращает число миллисекунд, прошедших с 1 января 1970 года GMT+0, то есть того же вида, который используется в конструкторе new Date(milliseconds) .

getTimezoneOffset() Возвращает разницу между местным и UTC-временем, в минутах.

Установка компонентов даты

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

  • setFullYear(year [, month, date])
  • setMonth(month [, date])
  • setDate(date)
  • setHours(hour [, min, sec, ms])
  • setMinutes(min [, sec, ms])
  • setSeconds(sec [, ms])
  • setMilliseconds(ms)
  • setTime(milliseconds) (устанавливает всю дату по миллисекундам с 01.01.1970 UTC)

Все они, кроме setTime() , обладают также UTC-вариантом, например: setUTCHours() .

Как видно, некоторые методы могут устанавливать несколько компонентов даты одновременно, в частности, setHours . При этом если какая-то компонента не указана, она не меняется. Например:

Автоисправление даты

Автоисправление – очень удобное свойство объектов Date . Оно заключается в том, что можно устанавливать заведомо некорректные компоненты (например 32 января), а объект сам себя поправит.

Неправильные компоненты даты автоматически распределяются по остальным.

Также это используют для получения даты, отдаленной от имеющейся на нужный промежуток времени. Например, получим дату на 70 секунд большую текущей:

Это вольный перевод замечательной статьи Date and time in JavaScript, автором которой является Dominik Wlazlowski.

Пока тикают часы и бегут дни на календаре, давайте поговорим о дате и времени в JavaScript. Здесь вы не найдёте много теории, скорее, тут будет больше практических примеров.

Объект Date

Для обработки дат в JavaScript существует объект Date.

Объект Date - методы

Методы объекта Date:

Совет: используйте instanceof

С помощью оператора instanceof мы можем проверить, имеем ли мы дело с объектом определённого типа. Например, давайте проверим, работаем ли мы с экземпляром объекта Date:

Установка даты

При создании объекта Date, мы можем указать (установить) дату несколькими способами:

Как вы уже заметили, мы можем установить только дату, или дату и час. Но мы также можем установить дату с помощью специализированных методов:

Этот код установит: год, месяц и день.

Например, для контраста, тут мы устанавливаем будущую дату (10 дней вперед):

Другие примеры

Пример — Измерение времени выполнения:

Пример — Сравнение дат с помощью объекта Date:

Довольно простой и эффективный способ.

Пример — Текущее время:

Пример — Создание читаемой даты:

В случае с методом getMonth() , мы добавили к результату 1. Это нужно потому, что этот метод возвращает месяц числом, начиная с 0. Такая вот особенность JavaScript.

Есть ещё одна проблема — форматирование. Инструкция alert(resTxt); выдаст результат, который будет подобен следующему:

Было бы здорово добавить недостающий '0' перед секундами и месяцем, чтобы получить результат в удобном для нас виде:

Просто добавим условие в код, который генерирует финальную строку:

Этот код мы увидим в следующем, чуть более сложном примере.

Пример — Собственная функция форматирования даты:

После выполнения код будет отображать результат похожий на этот:

Это полный пример кода, который отображает дату и время в JavaScript. Он также демонстрирует, как действуют методы объекта Date.

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

Функция — setTimeout()

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

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

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

Функция — setInterval()

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

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

Дополнительные примеры

Пример — Разница времени или сколько прошло времени между датами:

Пример — Вычисление возраста в JavaScript:

Для начала организуем простой пользовательский интерфейс в виде HTML-формы:

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

Дата и время в JavaScript библиотеках

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

Например, jQuery предлагает нам метод now() :

Метод $.now() - это сокращение от выражения (new Date).getTime() .

Библиотека MooTools предоставляет нам большие возможности операций над датой и временем в JavaScript, при этом используя минимум кода (например, методы: date.get(), date.set(), date.clone() или date.increment()).

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

Лучше эффективно использовать наше драгоценное время, нежели изобретать велосипед заново. При этом, мы будем использовать только проверенные, готовые и очень надёжные решения.

Особенно могу порекомендовать такие библиотеки:

Заключение

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

Для особо любопытных я бы рекомендовал более подробное описание объекта Date на MDN.

И теперь пришло время. чтобы закончить эту статью.

Спасибо за ваше время и внимание.

Делимся на оплату хостинга или кофе.
Чем чаще пью кофе, тем чаще пишу статьи.

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

Объект Date

Date – это встроенный объект JavaScript, который хранит дату и время. Он предоставляет ряд встроенных методов для форматирования и управления этими данными.

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

Для примера попробуйте присвоить переменной текущую дату. Создайте файл now.js.

// Set variable to current date and time
const now = new Date();
// View the output
now;
Wed Oct 18 2017 12:41:34 GMT+0000 (UTC)

В выводе получается строка с датой, которая содержит следующие данные:

День недели Месяц День Год Час Минуты Секунды Часовой пояс
Wed Oct 18 2017 12 41 34 GMT+0000 (UTC)

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

Однако JavaScript воспринимает дату, исходя из временной метки Unix-времени, которая представляет собой значение, состоящее из количества миллисекунд, прошедших с полуночи 1 января 1970 года. Получить метку времени можно с помощью метода getTime().

// Get the current timestamp
now.getTime();
1508330494000

Большое число, которое появляется в выводе в качестве текущей временной метки, представляет собой количество миллисекунд, прошедших с полуночи 1 января 1970 года на 18 октября 2017 года.

Нулевое время (или epoch time) представлено строкой даты 01 January, 1970 00:00:00 Universal Time (UTC) и временной меткой 0. Вы можете проверить это в браузере, создав в файле epoch.js новую переменную и присвоив ей новый экземпляр Date, основанный на отметке времени 0.

// Assign the timestamp 0 to a new variable
const epochTime = new Date(0);
epochTime;
01 January, 1970 00:00:00 Universal Time (UTC)

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

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

Метод создания Date Вывод
new Date() Текущая дата и время
new Date(timestamp) Дата на основе миллисекунд, прошедших с нулевого времени
new Date(date string) Дата на основе строки даты
new Date(year, month, day, hours, minutes, seconds, milliseconds) Дата на основе заданной даты и времени

Чтобы продемонстрировать различные способы ссылок на конкретную дату, попробуйте создать новые объекты Date, которые будут представлять 4 июля 1776 года, 12:30 по Гринвичу тремя различными способами.

// Timestamp method
new Date(-6106015800000);
// Date string method
new Date("January 31 1980 12:30");
// Date and time method
new Date(1776, 6, 4, 12, 30, 0, 0);

Все эти примеры представляют одну и ту же информацию о дате и времени тремя разными способами.

Как видите, метод временной метки имеет отрицательное число; любая дата до нулевого времени будет представлена как отрицательное число.

В третьем примере секунды и миллисекунды представлены 0. Если при создании объекта Date вам не хватает каких-либо данных, вы должны присвоить им 0. Отсутствующие данные нельзя пропускать, поскольку порядок данных о времени в строке не меняется. Также следует отметить, что месяц июль здесь обозначен как 6, а не как 7. Это происходит потому, что отсчет начинается не с 1, а с 0. Подробнее об этом – в следующем разделе.

Извлечение даты с помощью get

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

Дата/Время Метод Диапазон Пример
Год getFullYear() YYYY 1970
Месяц getMonth() 0-11 0 = January
День месяца getDate() 1-31 1 = 1st of the month
День недели getDay() 0-6 0 = Sunday
Час getHours() 0-23 0 = midnight
Минута getMinutes() 0-59
Секунда getSeconds() 0-59
Миллисекунда getMilliseconds() 0-999
Временная метка getTime() Количество миллисекунд с нулевого времени

Создайте новую дату, например 31 июля 1980 года, и присвойте ее переменной.

// Initialize a new birthday instance
const birthday = new Date(1980, 6, 31);

Теперь можно использовать все методы для извлечения каждого компонента даты.

birthday.getFullYear(); // 1980
birthday.getMonth(); // 6
birthday.getDate(); // 31
birthday.getDay(); // 4
birthday.getHours(); // 0
birthday.getMinutes(); // 0
birthday.getSeconds(); // 0
birthday.getMilliseconds(); // 0
birthday.getTime(); // 333849600000 (for GMT)

Иногда бывает необходимо извлечь только часть даты, и встроенные методы get помогут вам в этом.

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

// Get today's date
const today = new Date();
// Compare today with October 3rd
if (today.getDate() === 3 && today.getMonth() === 9) console.log("It's October 3rd.");
> else console.log("It's not October 3rd.");
>
It's not October 3rd.

Поскольку на момент написания мануала было не 3 октября, консоль сообщит, что это не так.

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

Изменение даты с помощью set

Для всех перечисленных выше методов get существует соответствующий метод set. Если get используется для извлечения определенного компонента даты, set используется для изменения этих компонентов. Ниже приведена подробная таблица методов set для объекта Date.

Дата/Время Метод Диапазон Пример
Год setFullYear() YYYY 1970
Месяц setMonth() 0-11 0 = January
День месяца setDate() 1-31 1 = 1st of the month
День недели setDay() 0-6 0 = Sunday
Час setHours() 0-23 0 = midnight
Минута setMinutes() 0-59
Секунда setSeconds() 0-59
Миллисекунда setMilliseconds() 0-999
Временная метка setTime() Количество миллисекунд с нулевого времени

Эти методы set можно использовать для изменения одного или нескольких компонентов даты. Например, можно изменить год в переменной birthday на 1997.

// Change year of birthday date
birthday.setFullYear(1997);
birthday;
Thu Jul 31 1997 00:00:00 GMT+0000 (UTC)

Теперь при вызове переменной birthday вы видите не 1980, а 1997 год.

Встроенные методы set позволяют изменять разные части объекта Date.

Методы UTC

Методы get, описанные выше, извлекают компоненты даты на основе локальных настроек часового пояса пользователя. Чтобы увеличить контроль над датами и временем, вы можете использовать методы getUTC, которые работают так же, как методы get, но вычисляют время, основанное на стандарте UTC (всемирное координированное время). Ниже приведена таблица методов UTC для объекта Date в JavaScript.

Дата/Время Метод Диапазон Пример
Год getUTCFullYear() YYYY 1970
Месяц getUTCMonth() 0-11 0 = January
День месяца getUTCDate() 1-31 1 = 1st of the month
День недели getUTCDay() 0-6 0 = Sunday
Час getUTCHours() 0-23 0 = midnight
Минута getUTCMinutes() 0-59
Секунда getUTCSeconds() 0-59
Миллисекунда getUTCMilliseconds() 0-999

Чтобы проверить разницу между локальными методами get и методами get UTC, запустите следующий код.

// Assign current time to a variable
const now = new Date();
// Print local and UTC timezones
console.log(now.getHours());
console.log(now.getUTCHours());

Этот код выведет текущее время и время по часовому поясу UTC. Если вы сейчас находитесь в часовом поясе UTC, то числа, которые выведет программа, будут одинаковыми.

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

Заключение

В этом мануале вы узнали, как создать экземпляр объекта Date, как использовать его встроенные методы для доступа и изменения компонентов определенной даты. Более подробную информацию о времени и дате в JavaScript вы можете найти на Mozilla Developer Network.

Умение работать с датами важно для многих общих задач в JavaScript: от создания регулярных отчетов до отображения дат и расписаний в правильном часовом поясе.

new Date() возвращает текущее время , а не текущую дату . Различие имеет значение, если вы пытаетесь сравнить его с другой датой, в которой нет компонента времени (т. Е. В полночь).

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

Это даст вам сегодняшнюю дату в формате мм / дд / гггг.

Просто измените today = mm +'/'+ dd +'/'+ yyyy; на любой формат, который вы пожелаете.

@imin: потому что меньше чем 2 символа средства 1 символов . и все под 10 ( от 1 до 9) , 1 символ, так что мы будем иметь 01 , 02 , . 09

Новый Date.prototype.toLocaleDateString() метод является более гибким решением. Он является частью JavaScript начиная с ECMAScript 5.1 и хорошо поддерживается вечнозелеными браузерами. MDN: toLocaleDateString()

Используйте эту replace опцию, если вы собираетесь повторно использовать utc переменную, например new Date(utc) , Firefox и Safari не распознают дату с тире.

Если вы хотите что-то простое красивое для конечного пользователя . Also, fixed a small suffix issue in the first version below. Now properly returns suffix.

ОБНОВЛЕНИЕ UBBER После долгих проволочек, я наконец-то установил GitHubbed и обновил его с помощью окончательного решения, которое я использовал для себя. У него даже были некоторые изменения в последнюю минуту, чтобы сделать его слаще! Если вы ищете старый jsFiddle, пожалуйста, посмотрите это .

Это обновление выпускается в 2 вариантах, все еще относительно небольших, хотя и не таких маленьких, как мой оригинальный ответ. Если вы хотите очень маленький, пойти с этим.
Также обратите внимание: это все еще менее раздутый, чем moment.js. Хотя moment.js хорош, imo, в нем слишком много светских методов, которые требуют изучения, как если бы это был язык. Мой здесь использует тот же общий формат, что и PHP: date .

Быстрые ссылки

Аромат 1 new Date().format(String) мой личный любимый Я знаю табу, но отлично работает с объектом Date. Просто будьте в курсе любых других модов, которые у вас могут быть с объектом Date.

BONUS Flavor (требуется jQuery). $.date(Date, String) Это гораздо больше, чем просто format опция. Он расширяет базовый объект Date и включает такие методы, как addDays . Для получения дополнительной информации, пожалуйста, смотрите Git .

В этом моде символы формата вдохновлены PHP: date . Для полного списка, пожалуйста, смотрите мой README

Этот мод также имеет гораздо более длинный список готовых форматов. Чтобы использовать готовый формат, просто введите его имя ключа. dateFormat(new Date(), 'pretty-a');

Как вы можете заметить, вы можете использовать double, \ чтобы убежать от персонажа.

Самый короткий из возможных.

Чтобы получить формат как "3/8/2018":

Кроме того, вы можете передать локаль в качестве аргумента, например toLocaleDateString("sr") , и т. Д.

Если вы просто хотите дату без информации о времени, используйте:

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

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

Результат будет как

В наши дни мы используем date-fns - он обрабатывает даты как неизменяемые (момент изменяет даты), работает быстрее и является модульным (просто импортируйте то, что вам нужно).

Чтобы разбить его на шаги:

(new Date()).toString() дает "Пт 28 июня 2013 15:30:18 GMT-0700 (PDT)"

(new Date()).toString().split(' ') делит вышеупомянутую строку на каждый пробел и возвращает массив следующим образом: ["Fri", "Jun", "28", "2013", "15:31:14", "GMT-0700", "(PDT)" ]

Мне нужно было время в 00:00:00, и я не хотел перестраивать его вручную; шаг 2 приводит меня туда отлично. Престижность!

Это работает каждый раз:

Также вы можете вызвать метод toLocaleDateString с двумя параметрами:

Статья на MSDN . Подробнее об этом методе на MDN .

классное решение. должно быть на вершине. new Date().toLocaleDateString("de-de") делает трюк для меня.

Более чистая и простая версия:

Результат зависит от локали пользователя :

Если вас устраивает формат ГГГГ-ММ-ДД, это тоже подойдет.

Поскольку длина всегда фиксирована, мы также можем использовать подстроку. новая дата (). toISOString (). подстрока (0, 10); Может быть немного быстрее.

Вы можете использовать библиотеку Date.js, которая расширяет объект Date, поэтому у вас может быть метод .today ().

если вы используете jquery ui с датчиком, вы можете использовать $ .datepicker.formatDate ('гг / мм / дд', новая дата ())

Вы можете получить текущую дату, вызвав статический метод, вот так:

Ответ Варуна не учитывает TimezoneOffset . Вот версия, которая делает:

Это TimezoneOffset минуты, а конструктор Date занимает миллисекунды, то есть умножение на 60000 .

Кратчайший ответ: new Date().toJSON().slice(0,10)

Я искал очень простую функцию семени, которая регулярно меняется. Этот ответ - настоящее удовольствие.

Так же toISOString() будет возвращено только текущее время UTC, а не местное время. Мы должны сделать дату, используя функцию .toString (), чтобы получить дату в yyyy-MM-dd таком формате, как

Чтобы ввести дату и время в yyyy-MM-ddTHH:mm:ss формате

Чтобы ввести дату и время в yyyy-MM-dd HH:mm:ss формате

Если вам нужен простой DD/MM/YYYY формат, я просто придумала это простое решение, хотя оно не содержит префикс пропущенных нулей.

будет работать тоже

ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ: 23.08.19. Библиотека date-fns работает так же, как moment.js, но имеет гораздо меньше места. Он позволяет вам выбирать, какие функции вы хотите включить в свой проект, чтобы вам не приходилось собирать всю библиотеку для форматирования сегодняшней даты. Если минимальная сторонняя библиотека не подходит для вашего проекта, я одобряю принятое Сэмюэлем Меддоусом решение сверху.

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

РЕДАКТИРОВАТЬ 2/7/2017 Однострочное решение JS:

var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/4/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];

edge, ff latest, & chrome return todaysDate = "2/7/2017"
"работает" * в IE10 +

объяснение

Я обнаружил, что IE10 и IE Edge делают вещи немного по-другому . пойди разберись. с new Date(Date.now()).toLocaleString() вводом,

Я мог бы написать большую длинную функцию и FTFY. Но вы действительно должны использовать moment.js для этого. Мой сценарий просто очищает это и дает вам расширенную традиционную нотацию США: > todaysDate = "March 06, 2017"

IE EDGE возвращает:

Читайте также: