Как мне получить текущую дату в JavaScript?
new Date()
возвращает текущее время , а не текущую дату . Различие имеет значение, если вы пытаетесь сравнить его с другой датой, в которой нет компонента времени (т. Е. В полночь).
Как мне получить текущую дату в JavaScript?
new Date()
возвращает текущее время , а не текущую дату . Различие имеет значение, если вы пытаетесь сравнить его с другой датой, в которой нет компонента времени (т. Е. В полночь).
Ответы:
Используется 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;
на любой формат, который вы пожелаете.
01
, 02
, ...,09
Date.prototype.toLocaleDateString()
метод является более гибким решением. Он является частью JavaScript начиная с ECMAScript 5.1 и хорошо поддерживается вечнозелеными браузерами. MDN:toLocaleDateString()
var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);
Используйте эту replace
опцию, если вы собираетесь повторно использовать utc
переменную, например new Date(utc)
, Firefox и Safari не распознают дату с тире.
toUTCString()
возвращается как utc datetime.
moment( new Date().toJSON().slice(0, 10) )
ОБНОВЛЕНО! , Прокрутить вниз
Если вы хотите что-то простое красивое для конечного пользователя ... Also, fixed a small suffix issue in the first version below. Now properly returns suffix.
var objToday = new Date(),
weekday = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'),
dayOfWeek = weekday[objToday.getDay()],
domEnder = function() { var a = objToday; if (/1/.test(parseInt((a + "").charAt(0)))) return "th"; a = parseInt((a + "").charAt(1)); return 1 == a ? "st" : 2 == a ? "nd" : 3 == a ? "rd" : "th" }(),
dayOfMonth = today + ( objToday.getDate() < 10) ? '0' + objToday.getDate() + domEnder : objToday.getDate() + domEnder,
months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
curMonth = months[objToday.getMonth()],
curYear = objToday.getFullYear(),
curHour = objToday.getHours() > 12 ? objToday.getHours() - 12 : (objToday.getHours() < 10 ? "0" + objToday.getHours() : objToday.getHours()),
curMinute = objToday.getMinutes() < 10 ? "0" + objToday.getMinutes() : objToday.getMinutes(),
curSeconds = objToday.getSeconds() < 10 ? "0" + objToday.getSeconds() : objToday.getSeconds(),
curMeridiem = objToday.getHours() > 12 ? "PM" : "AM";
var today = curHour + ":" + curMinute + "." + curSeconds + curMeridiem + " " + dayOfWeek + " " + dayOfMonth + " of " + curMonth + ", " + curYear;
document.getElementsByTagName('h1')[0].textContent = today;
<h1></h1>
ОБНОВЛЕНИЕ UBBER После долгих проволочек, я наконец-то установил GitHubbed и обновил его с помощью окончательного решения, которое я использовал для себя. У него даже были некоторые изменения в последнюю минуту, чтобы сделать его слаще! Если вы ищете старый jsFiddle, пожалуйста, посмотрите это .
Это обновление выпускается в 2 вариантах, все еще относительно небольших, хотя и не таких маленьких, как мой оригинальный ответ. Если вы хотите очень маленький, пойти с этим.
Также обратите внимание: это все еще менее раздутый, чем moment.js. Хотя moment.js хорош, imo, в нем слишком много светских методов, которые требуют изучения, как если бы это был язык. Мой здесь использует тот же общий формат, что и PHP: date .
Аромат 1
new Date().format(String)
мой личный любимый Я знаю табу, но отлично работает с объектом Date. Просто будьте в курсе любых других модов, которые у вас могут быть с объектом Date.
// use as simple as
new Date().format('m-d-Y h:i:s'); // 07-06-2016 06:38:34
Вкус 2
dateFormat(Date, String)
Более традиционный метод «все в одном». Имеет все возможности предыдущего, но вызывается через метод с параметром Date.
// use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s'); // 07-06-2016 06:38:34
BONUS Flavor (требуется jQuery).
$.date(Date, String)
Это гораздо больше, чем простоformat
опция. Он расширяет базовый объект Date и включает такие методы, какaddDays
. Для получения дополнительной информации, пожалуйста, смотрите Git .
В этом моде символы формата вдохновлены PHP: date . Для полного списка, пожалуйста, смотрите мой README
Этот мод также имеет гораздо более длинный список готовых форматов. Чтобы использовать готовый формат, просто введите его имя ключа.dateFormat(new Date(), 'pretty-a');
Как вы можете заметить, вы можете использовать double, \
чтобы убежать от персонажа.
Самый короткий из возможных.
Чтобы получить формат как "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")
, и т. Д.
Если вы просто хотите дату без информации о времени, используйте:
var today = new Date();
today.setHours(0, 0, 0, 0);
document.write(today);
Попробуй это:
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
Если вы ищете более детальный контроль над форматами даты, я настоятельно рекомендую проверить моменты. Потрясающая библиотека - и только 5 КБ. http://momentjs.com/
Вы можете использовать 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>
moment().format("L")
уважать текущую локаль.
var d = (new Date()).toString().split(' ').splice(1,3).join(' ');
document.write(d)
Чтобы разбить его на шаги:
(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)" ]
(new Date()).toString().split(' ').splice(1,3).join(' ')
берет второе, третье и четвертое значения из вышеуказанного массива, объединяет их с пробелами и возвращает строку «28 июня 2013»
Date().split(' ').splice(1,3).join(' ')
Это работает каждый раз:
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);
var date = new Date().toLocaleDateString("en-US");
Также вы можете вызвать метод toLocaleDateString
с двумя параметрами:
var date = new Date().toLocaleDateString("en-US", {
"year": "numeric",
"month": "numeric"
});
new Date().toLocaleDateString("de-de")
делает трюк для меня.
Более чистая и простая версия:
new Date().toLocaleString();
Результат зависит от локали пользователя :
27.02.2017, 9:15:41
Если вас устраивает формат ГГГГ-ММ-ДД, это тоже подойдет.
new Date().toISOString().split('T')[0]
2018-03-10
Вы можете использовать библиотеку Date.js, которая расширяет объект Date, поэтому у вас может быть метод .today ().
Вы можете получить текущую дату, вызвав статический метод, вот так:
var now = Date.now()
ссылка:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now
var dtToday = new Date(date.now);
Ответ Варуна не учитывает TimezoneOffset . Вот версия, которая делает:
var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11
Это TimezoneOffset
минуты, а конструктор Date занимает миллисекунды, то есть умножение на 60000
.
Кратчайший ответ: new Date().toJSON().slice(0,10)
new Date().toDateString();
Результат:
«Ср 3 февраля 2016»
Так же 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',' '));
Если вам нужен простой DD/MM/YYYY
формат, я просто придумала это простое решение, хотя оно не содержит префикс пропущенных нулей.
var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );
new Date().toISOString().slice(0,10);
будет работать тоже
ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ: 23.08.19. Библиотека date-fns работает так же, как moment.js, но имеет гораздо меньше места. Он позволяет вам выбирать, какие функции вы хотите включить в свой проект, чтобы вам не приходилось собирать всю библиотеку для форматирования сегодняшней даты. Если минимальная сторонняя библиотека не подходит для вашего проекта, я одобряю принятое Сэмюэлем Меддоусом решение сверху.
Сохранение истории ниже, потому что это помогло нескольким людям. Но, к сведению, он довольно хакерский и может сломаться без предупреждения, как и большинство решений в этом посте.
РЕДАКТИРОВАТЬ 2/7/2017 Однострочное решение JS:
tl; dr
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 returntodaysDate = "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]
даст вам время суток.
Вы можете использовать это
<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>
Если вы используете JQuery. Попробуйте этот лайнер:
$.datepicker.formatDate('dd/mm/yy', new Date());
Вот соглашение для форматирования даты
Вот ссылка для jQuery DatePicker
Простой способ сделать это (учитывая текущий часовой пояс, использующий формат ISO гггг-мм-дд):
let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"
Обычно это довольно универсальный совместимый формат даты, и при необходимости вы можете преобразовать его в чистое значение даты:
Date.parse(d); // 1582044297000
Вы можете оформить заказ
var today = new Date();
today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
document.write(today);
И посмотрите документацию для конструктора Date (). ссылка на сайт
Что в этом такого? .. Самый чистый способ сделать это
var currentDate=new Date().toLocaleString().slice(0,10);
3/4/2018,
, лучше использовать new Date().toJSON().slice(0,10)
.
.slice(0,10)
Это может помочь вам
var date = new Date();
console.log(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());
Будет напечатана текущая дата в формате дд / мм / гггг
Это хорошо, чтобы получить отформатированную дату
let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);
Я думаю, что это старый вопрос, но самый простой способ будет следующим:
var date = new Date();
var TimeStamp = date.toLocaleString();
function CurrentTime(){
alert(TimeStamp);
}
Это захватит текущее время, передаст его в строку на основе местоположения, а затем вы можете вызвать функцию CurrentTime для отображения времени. Для меня это был бы самый эффективный способ получить отметку времени для чего-либо.
var currentTime = new Date();