Питання Як отримати поточну дату в JavaScript?


Як отримати поточну дату в JavaScript?


1685
2017-10-07 11:39


походження


var currentTime = new Date(); - Hendrik
Див документація для об'єкта Date. У нього є приклади. - Quentin
це допоможе вам tizag.com/javascriptT/javascriptdate.php
new Date() повертає поточний часне поточний дата. Відмінність має значення, якщо ви намагаєтесь порівняти його з іншою датою, яка не має компонент часу (тобто, опівночі). - Steve Bennett
використовуйте momentJs, це lib - це золото для розробників. - RBoschini


Відповіді:


Використовуйте 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; на будь-який формат, який ви хочете.


2014
2018-02-08 04:42



як отримати годину і хвилини - lbennet
спасибі за код .. але те, що я все ще не отримую, це лінія if (dd <10) (dd = '0' + dd} ... чому <10? з того, що я розумію з коду, якщо символ дня менше, ніж 2, просто додайте попередній 0 перед днем ​​.. але чому 10? - imin
@imin: оскільки менше 2 символів означає 1 символ ... і все під 10 (від 1 до 9) - 1 символ, тому ми матимемо 01, 02, ..., 09 - zfm
@MounaCheikhna - Як ми могли бути в 999 році? - nnnnnn
Обмінюйтесь місяцем і датою, якщо ви не в Північній Америці. - Mark Micallef


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

Використовувати replace варіант, якщо ви збираєтеся повторно використовувати utc змінна, наприклад new Date(utc), оскільки Firefox і Safari не визнають дату з тире.


341
2017-09-29 14:13



Виглядає добре, щоб бути правдою. Будь-які недоліки до цього? - Norbert
Я не думаю так :) Здається досить простий! - Varun Natraaj
toJSON () повертає як utc datetime - Andy
Вона не враховує TimezoneOffset. У моє час тестування я шукав "зараз", і я отримав "вчора". stackoverflow.com/questions/13646446/... - mickmackusa
Ідеально. Це найчистіший спосіб зробити це, я бачу тут. Працює в MomentJS для "Сьогодні, не зараз" moment( new Date().toJSON().slice(0, 10) ) - Kyle Hotchkiss


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

Якщо ви хочете зробити щось простим для кінцевого користувача ... 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>

ОГОЛОШЕННЯ Після довгих зволікань, я нарешті GitHubbed і оновив це з остаточним рішенням, яке я використовував для себе. Це навіть змінило останню хвилину, щоб зробити його солодшим! Якщо ви шукаєте старий jsFiddle, будь ласка, перегляньте це.

Це оновлення з'являється 2 ароматизатори, все ще відносно невеликі, хоч і не такі маленькі, як мої вище, оригінальна відповідь. Якщо ви хочете надзвичайно малого, йди з цим.
 Також Зауважте: це ще менше роздуто, ніж moment.js. Тоді як moment.js є приємним, імo, він має багато світських методів, які потребують вивчення моменту, як якби мова була. Мій шаблон тут використовує такий же загальний формат, як PHP: дата.

Швидкі посилання

Смак 1 new Date().format(String)   Мій особистий приятель. Я знаю табу, але чудово працює над об'єктом дати. Просто пам'ятайте про будь-які інші моди, які ви можете мати в об'єкті дати.

//  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 (вимагає jQuery) $.date(Date, String)   Це містить набагато більше, ніж просто просте format варіант Він розширює об'єкт базової дати та включає в себе такі методи, як addDays. Для отримання додаткової інформації див Гіт.

У цьому моді символи формату надихаються 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'
    • 'soap' == 'Y-m-d \\ 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'
  • "константи"
    • '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'
    • "ЄВРОПА" == 'j F Y'
    • 'EUROPEANSHORT' == 'd.m.Y'
    • 'EUROPEANSHORTWTIME' == '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'

Як ви помітили, ви можете використовувати подвійне \ щоб уникнути персонажа.



187
2018-02-10 14:33



@KamranAhmed Майже 2 роки і 40+ голосів пізніше, я б сказала, що зусилля коштували цього. Лол. З тих пір я розширив цей клас особисто, але не завантажив, тому що думав, що більшість людей використовуватимуть цей плагін для інших js, який я бачу рекомендованим, але, я думаю, я повинен зробити його більш "публічним" та додавати його тут. - SpYk3HH
moment.js тепер те, що ви будете використовувати в ці дні - Christian Stewart
Великі пальці для зусиль і легкої ваги! - Mike Devenney
Нагорі, є друкарська помилка (що зайняло мене якийсь час, щоб знайти), він використовує змінну "сьогодні" у рядку: "dayOfMonth = today +" - user1435707
"сьогодні + (objToday.getDate () <10)? '0' + objToday.getDate () + domEnder: objToday.getDate () + domEnder" - JS це дурна мова. - Alex S


Якщо ви просто хочете дати без інформації про час, скористайтеся:

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

document.write(today);


115
2017-09-02 06:14



Це здається єдиною відповіддю, яка насправді відповідає на питання. Кожен інший відповідає, як форматувати дату як рядок. - Inrego
++ найкраща відповідь у цій темі - Pawel Gradecki
Дійсно Це правильна відповідь на проблему. - tkarls


Спробуйте це:

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

90
2018-02-15 08:48





Найкоротший можливий. 

Щоб отримати формат "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)

Також ви можете пройти місцевість як аргумент, наприклад toLocaleDateString("sr")і т. д.


62
2018-03-10 16:30





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


57
2017-12-12 01:03



Це найкращий час, який я знайшов! - andho
Підтримує локалізацію, як шарм. - Risadinha
У наші дні ми використовуємо date-fns - це трактує дати як незмінне (Moment мутувати дати), швидше і є модульним (просто імпортуйте те, що вам потрібно). - Luke Williams
Так, я більше не можу погодитися. - d3cypher


Ви можете використовувати 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
2017-08-16 11:56



Краща відповідь, "Момент" виглядає чудово. - nottinhill
Момент є надмірним, щоб просто отримати поточну дату. - Dan Dascalescu
Or moment().format("L") щоб поважати поточний регіон. - Dunc
@DanDascalescu Насправді, основна специфікація Javascript для DateTime - це погано. - Todd


var d = (new Date()).toString().split(' ').splice(1,3).join(' ');

document.write(d)

Розбити його на кроки:

  1. (new Date()).toString() дає "Fri Jun 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 року"


41
2018-06-28 22:32



Я потребував часу 00:00:00 і не хотів його перебудувати вручну; крок 2 мене прекрасно підводить. Кудос! - panhandel
Ви можете зберегти деякі байти, виконавши це: Date().split(' ').splice(1,3).join(' ') - hyde
Дякую за розбиття! - Zach Saucier


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

Також ви можете викликати метод toLocaleDateString з двома параметрами:

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

Стаття о MSDN. Більше про цей метод на MDN.


36
2017-07-09 07:01



Приємно, працює в Chrome. На жаль, не працює на PhantomJS станом на 04/24/2016 - chris