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

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

30 ответов


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

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

if(dd<10) {
    dd = '0'+dd
} 

if(mm<10) {
    mm = '0'+mm
} 

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

это даст вам сегодняшнюю дату в формате mm/dd / yyyy.

просто изменить today = mm +'/'+ dd +'/'+ yyyy; в любом формате вы хотите.


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

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


обновлено! Прокрутите Вниз

если вы хотите что-то простое довольно для конечного пользователя ... 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 ароматы, все еще относительно небольшие, хотя и не такие маленькие, как мой выше, оригинальный ответ. Если вы хотите очень маленький, идите с этим.
Также обратите внимание: это все еще менее раздуто, чем момент.js. Пока момент.js хорош, ИМО, он имеет много светских методов, которые требуют момента обучения, как если бы это был язык. Мой здесь использует то же самое общий формат как 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) Более традиционный метод "все-в-одном". Имеет все возможности предыдущего, но вызывается методом с датой param.

//  use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s');  //  07-06-2016 06:38:34

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

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

этот мод также имеет гораздо более длинный список готовых форматов. Чтобы использовать формат premade, просто введите его имя ключа. 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'
    • 'soap' = = ' Y-m-d\\TH:i:s.u'
    • 'soap2' = = ' Y-m-d\\TH:i:s.вверх!--51-->
    • 'unixTimestamp' = = '@U'
    • 'xmlrpc' == 'Ymd\\TG: i: s'
    • 'xmlrpcCompact' = = 'Ymd\\tGis'
    • 'wddx' = = 'Y-n-j\\TG:i: s'
  • "константы"
    • 'AMERICAN' = = 'F j Y'
    • 'AMERICANSHORT' = = 'm/d / Y'
    • 'AMERICANSHORTWTIME' = = 'm/d / Y h:i:sA'
    • 'ATOM' = = 'Y-m-d\\TH: i: sP'
    • 'COOKIE' = = 'l d-M-Y H:i: s T'
    • 'EUROPEAN' = = 'j F Y'
    • 'EUROPEANSHORT' == d.м. Y'
    • 'EUROPEANSHORTWTIME' = = ' d.м. Y H: i: s'
    • 'ISO8601' = = 'Y-m-d\\TH: i: sO'
    • 'LEGAL' = = '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'
    • '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'

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



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

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

кратчайшие.

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

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

console.log(today)

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

let today = new Date().toLocaleDateString()

console.log(today)

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


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


Вы можете использовать момент.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>

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(' ') принимает второе, третье и четвертое значения из приведенного выше массива, соединяет их пробелами и возвращает строку " Jun 28 2013"


var date = new Date().toLocaleDateString("en-US");

кроме того, вы можете вызвать метод toLocaleDateString С двумя параметрами:

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

статью MSDN. Подробнее об этом методе на MDN.


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

    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);
    
    document.write(today);

Cleaner, более простая версия:

new Date().toLocaleString();

результат зависит в соответствии с пользователем locale:

2/27/2017, 9:15:41 AM


можно использовать дата.js библиотека, которая расширяет объект даты, таким образом, вы можете иметь .сегодня() метод.


Если вы довольны форматом гггг-ММ-ДД, это также сделает работу.

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

2018-03-10


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

var now = Date.now()

ссылки:

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


Варун это!--5--> не TimezoneOffset. Вот версия, которая делает:

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

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


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

var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );

new Date().toDateString();

результат:

"Ср 03 Февраля 2016"


короткий ответ: new Date().toJSON().slice(0,10)


new Date().toISOString().slice(0,10); 

будет работать слишком


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

<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());

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

  • d-день месяца (без ведущего нуля)
  • dd-день месяца (двузначный)
  • o-день года (без ведущих нулей)
  • ОО-день года (трехзначный)
  • D-day имя короткое
  • DD-день имя долго
  • м - месяц (без нуля)
  • мм - месяц год (двузначный)
  • M-месяц имя короткое
  • мм-месяц имя долго
  • y - год (две цифры)
  • YY - год (четыре цифры)

вот ссылка для jQuery datepicker


однострочное решение 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 return todaysDate = "2/7/2017"
"работает" * в IE10+

изменить 27.02.2017

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

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

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

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

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

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

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

updated обновлено один-лайнер:

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] даст вам время суток.


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

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

чтобы получить дату и время в


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

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);


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

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

function CurrentTime(){
  alert(TimeStamp);
}

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


var dateTimeToday = new Date();
var dateToday = new Date(
    dateTimeToday.getFullYear(), 
    (dateTimeToday.getMonth() + 1) /*Jan = 0! */, 
    dateTimeToday.getDate(), 
    0, 
    0, 
    0, 
    0);

Я не знаю, поможет ли это кому-нибудь, но я использую это, чтобы получить объект Today Date.

new Date( 3600000*Math.floor(Date.now()/3600000) )

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

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

это будет печатать текущую дату в формате dd/MM / yyyy