Как мне получить текущую дату в JavaScript?

2489
Suresh Chaganti 7 Окт 2009 в 15:39

30 ответов

Лучший ответ

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

var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();

today = mm + '/' + dd + '/' + yyyy;
document.write(today);

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

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

2655
mohshbool 14 Мар 2019 в 22:47

Простой способ сделать это (учитывая текущий часовой пояс, использующий формат ISO гггг-мм-дд):

let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"

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

Date.parse(d); // 1582044297000
4
Caiuby Freitas 18 Фев 2020 в 16:46
var dateTimeToday = new Date();
var dateToday = new Date(
    dateTimeToday.getFullYear(), 
    (dateTimeToday.getMonth() + 1) /*Jan = 0! */, 
    dateTimeToday.getDate(), 
    0, 
    0, 
    0, 
    0);
3
Artjom B. 12 Апр 2015 в 16:07

Я думаю, что это старый вопрос, но самый простой способ будет следующим:

var date = new Date();
var TimeStamp = date.toLocaleString();

function CurrentTime(){
  alert(TimeStamp);
}

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

3
Brock Davis 19 Янв 2015 в 22:21

Это хорошо, чтобы получить отформатированную дату

let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);
4
deHaar 1 Авг 2019 в 10:32

Это может вам помочь

var date = new Date();
console.log(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());

Будет напечатана текущая дата в формате дд / мм / гггг

4
Jayant Patil 17 Авг 2016 в 08:33

Что в этом такого? .. Самый чистый способ сделать это

var currentDate=new Date().toLocaleString().slice(0,10);

4
ISONecroMAn 31 Окт 2015 в 19:39

Вы можете проверить это

var today = new Date();
today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
document.write(today);

И посмотрите документацию для конструктора Date (). ссылка

4
Akhil 11 Авг 2015 в 06:31

Если вы используете JQuery. Попробуйте этот лайнер:

$.datepicker.formatDate('dd/mm/yy', new Date());

Вот соглашение для форматирования даты

  • d - день месяца (без начального нуля)
  • дд - день месяца (две цифры)
  • o - день года (без начальных нулей)
  • oo - день года (три цифры)
  • D - название дня короткое
  • ДД - длинное имя
  • m - месяц года (без нуля в начале)
  • мм - месяц года (две цифры)
  • М - название месяца короткое
  • MM - название месяца
  • y - год (две цифры)
  • гг - год (четыре цифры)

Вот ссылка на jQuery datepicker

6
Souvik 1 Фев 2017 в 11:50

Вы можете использовать это

<script>
function my_curr_date() {      
    var currentDate = new Date()
    var day = currentDate.getDate();
    var month = currentDate.getMonth() + 1;
    var year = currentDate.getFullYear();
    var my_date = month+"-"+day+"-"+year;
    document.getElementById("dateField").value=my_date;    
}
</script>

HTML - это

<body onload='return my_curr_date();'>
    <input type='text' name='dateField' id='dateField' value='' />
</body>
7
ROMANIA_engineer 19 Окт 2014 в 19:17

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

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

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

tl; доктор

var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/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() в качестве ввода,

IE10 возвращает:

"Tuesday, February 07, 2017 2:58:25 PM"

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

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

"‎2‎/‎7‎/‎2017‎ ‎2‎:‎59‎:‎27‎ ‎PM"

Конечно, это не может быть так просто. Строка даты в Edge содержит невидимые символы «•» между каждым видимым. Так что теперь мы будем проверять, не является ли первый символ числом, а первые 3 символа, поскольку оказывается, что любой символ во всем диапазоне дат в конечном итоге будет точкой или косой чертой в некоторой точке. Так что для простоты просто .slice ( ) первые три символа (крошечный буфер против будущих махинаций), а затем проверьте номера. Вероятно, следует отметить, что эти невидимые точки могут потенциально сохраняться в вашем коде. Возможно, я бы покопался в этом, если бы у вас были большие планы, чем просто распечатать эту строку для вашего просмотра.

∴ обновленный однострочный:

var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/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];

Это отстой, чтобы читать. Как насчет:

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

ОРИГИНАЛЬНЫЙ ОТВЕТ

У меня есть одна строка для вас:

new Date(Date.now()).toLocaleString().split(', ')[0];

И [1] даст вам время суток.

8
Cameron Donahue 23 Авг 2019 в 17:59
new Date().toISOString().slice(0,10); 

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

9
Toucouleur 1 Окт 2015 в 16:19

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

var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );
10
Phil Ricketts 30 Июн 2015 в 08:10

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

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('T')[0]);

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

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0]);

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

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));
11
jafarbtech 18 Май 2018 в 07:27
new Date().toDateString();

Результат:

«Ср 3 февраля 2016»

11
Isayevskiy_Sergey 3 Фев 2016 в 12:08

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

15
Blair Anderson 1 Дек 2017 в 21:43

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

var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11

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

16
Community 23 Май 2017 в 12:18

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

var now = Date.now()

Справка:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now

18
Jose Rojas 11 Июл 2015 в 20:03

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

23
eomeroff 26 Июн 2012 в 13:00

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

new Date().toISOString().split('T')[0]

2018-03-10

27
Aung Htet 10 Мар 2018 в 14:48

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

new Date().toLocaleString();

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

27.02.2017, 9:15:41

29
Oded Breiner 27 Фев 2017 в 07:19
var date = new Date().toLocaleDateString("en-US");

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

var date = new Date().toLocaleDateString("en-US", {
    "year": "numeric",
    "month": "numeric"
});

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

43
falsarella 22 Дек 2015 в 17:18

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

    var now = new Date();
    var day = ("0" + now.getDate()).slice(-2);
    var month = ("0" + (now.getMonth() + 1)).slice(-2);
    var today = now.getFullYear() + "-" + (month) + "-" + (day);
    
    console.log(today);
46
roshan 28 Мар 2019 в 07:01
var d = (new Date()).toString().split(' ').splice(1,3).join(' ');

document.write(d)

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

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

  2. (new Date()).toString().split(' ') делит вышеуказанную строку на каждый пробел и возвращает массив следующим образом: ["Fri", "Jun", "28", "2013", "15:31:14", "GMT-0700", "(ТИХООКЕАНСКОЕ ЛЕТНЕЕ ВРЕМЯ)"]

  3. (new Date()).toString().split(' ').splice(1,3).join(' ') получает второе, третье и четвертое значения из вышеуказанного массива, объединяет их с пробелами и возвращает строку "28 июня 2013"

51
Michael 8 Июл 2016 в 15:22

Вы можете использовать moment.js: http://momentjs.com/

var m = moment().format("DD/MM/YYYY");

document.write(m);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
54
Michael 8 Июл 2016 в 15:28

Если вы ищете более детальный контроль над форматами даты, я настоятельно рекомендую проверить моменты. Потрясающая библиотека - и всего 5КБ. http://momentjs.com/

66
benjamin.keen 12 Дек 2012 в 01:03

Попробуй это:

var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")

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

15/2/2012
101
Dan Atkinson 10 Фев 2016 в 11:20

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

var today = new Date();
    today.setHours(0, 0, 0, 0);

document.write(today);
167
Michael 8 Июл 2016 в 15:23

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

Чтобы получить формат как "2018-08-03":

let today = new Date().toISOString().slice(0, 10)

console.log(today)

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

let today = new Date().toLocaleDateString()

console.log(today)

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

198
Damjan Pavlica 5 Авг 2018 в 21:09
var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);

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

434
Max 27 Дек 2016 в 18:47