Как получить текущую дату в JavaScript? - PullRequest
1993 голосов
/ 07 октября 2009

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

Ответы [ 44 ]

2369 голосов
/ 08 февраля 2011

Используйте 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; на любой формат, который вы пожелаете.

388 голосов
/ 29 сентября 2013

var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);

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

209 голосов
/ 10 февраля 2012

ОБНОВЛЕНО! , Прокрутите вниз

Если вы хотите что-то простое, красивое для конечного пользователя ... 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 UPDATE После долгих проволочек я наконец-то GitHubbed и обновил его с помощью окончательного решения, которое я использовал для себя. В него даже были внесены некоторые изменения в последнюю минуту, чтобы сделать его слаще! Если вы ищете старый jsFiddle, пожалуйста, посмотрите это .

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

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

Аромат 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

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

В этом моде символы формата вдохновлены PHP: дата . Полный список см. В моем README

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

  • 'соединение'
    • 'commonLogFormat' == 'd / M / Y: G: i: s'
    • 'exif' == 'Y: m: d G: i: s'
    • 'isoYearWeek' == 'Y \\ WW'
    • 'isoYearWeek2' == 'Y - \\ WW'
    • 'isoYearWeekDay' == 'Y \\ WWj'
    • 'isoYearWeekDay2' == 'Y - \\ WW-j'
    • 'mySQL' == 'Y-m-d h: i: s'
    • 'postgreSQL' == 'Y.z'
    • 'postgreSQL2' == 'Yz'
    • 'мыло' == 'Y-м-д \\ TH: i: s.u'
    • 'soap2' == 'Y-m-d \\ TH: i: s.uP'
    • 'unixTimestamp' == '@ U'
    • 'xmlrpc' == 'Ymd \\ TG: i: s'
    • 'xmlrpcCompact' == 'Ymd \\ tGis'
    • 'wddx' == 'Y-n-j \\ TG: i: s'
  • 'константы'
    • 'АМЕРИКАНСКИЙ' == 'F j Y'
    • 'AMERICANSHORT' == 'm / d / Y'
    • 'AMERICANSANSHORTWTIME' == 'm / d / Y h: i: sA'
    • 'ATOM' == 'Y-m-d \\ TH: i: sP'
    • 'COOKIE' == 'l d-M-Y H: i: s T'
    • 'ЕВРОПЕЙСКИЙ' == 'j F Y'
    • 'ЕВРОПЕЙСКИЙ ХОРТ' == 'd.m.Y'
    • 'ЕВРОПЕЙСКИЙ КРАТКИЙ ВРЕМЯ' == 'd.m.Y H: i: s'
    • 'ISO8601' == 'Y-m-d \\ TH: i: sO'
    • 'ЮРИДИЧЕСКИЕ' == 'j F Y'
    • 'RFC822' == 'D d M y H: i: s O'
    • 'RFC850' == 'l d-M-y H: i: s T'
    • 'RFC1036' == 'D d M y H: i: s O'
    • 'RFC1123' == 'D d M Y H: i: s O'
    • 'RFC2822' == 'D d M Y H: i: s O'
    • 'RFC3339' == 'Y-m-d \\ TH: i: sP'
    • 'RSS' == 'D d M Y H: i: s O'
    • 'W3C' == 'Y-m-d \\ TH: i: sP'
  • 'довольно'
    • 'pretty-a' == 'g: i.sA l jS \\ o \\ f F Y'
    • 'pretty-b' == 'g: iA l jS \\ o \\ f F Y'
    • 'pretty-c' == 'n / d / Y g: iA' ​​
    • 'pretty-d' == 'n / d / Y'
    • 'pretty-e' == 'F jS - g: ia'
    • 'pretty-f' == 'g: iA' ​​

Как вы можете заметить, вы можете использовать двойной \ для экранирования символа.


148 голосов
/ 10 марта 2016

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

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

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

console.log(today)

Чтобы получить формат, подобный "3/3/2018":

let today = new Date().toLocaleDateString()

console.log(today)

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

142 голосов
/ 02 сентября 2014

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

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

document.write(today);
96 голосов
/ 15 февраля 2012

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

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
64 голосов
/ 12 декабря 2012

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

51 голосов
/ 16 августа 2014

Вы можете использовать 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>
45 голосов
/ 29 июня 2013

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 "," (PDT) "]

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

44 голосов
/ 03 ноября 2013

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

    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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...