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

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

Ответ 1

Используйте 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);

Ответ 2

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

Ответ 3

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

Если вы хотите что-то простое и красивое для конечного пользователя... 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>

Ответ 4

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

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

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

console.log(today)

Ответ 5

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

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

document.write(today);

Ответ 6

Попробуйте следующее:

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

document.write(d)

Ответ 10

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

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

Ответ 11

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

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

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

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

Ответ 12

Чистая, простая версия:

new Date().toLocaleString();

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

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

Ответ 13

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

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

2018-03-10

Ответ 14

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

Ответ 16

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

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

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

Ответ 17

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

Ответ 18

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

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

Ответ 19

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

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

Ответ 20

new Date().toDateString();

Результат:

"Wed Feb 03 2016"

Ответ 21

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

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

Ответ 22

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

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

Ответ 23

ПОСЛЕДНИЕ ИЗМЕНЕНИЯ: 23.08.199 Библиотека 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 return todaysDate = "2/7/2017"
"works"* in 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"

Конечно, это не может быть так просто. Строка даты края имеет невидимые символы "•" между каждым видимым. Теперь мы будем проверять, не является ли первый символ числом, а первые 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] покажет вам время суток.

Ответ 24

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

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

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

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

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

Ответ 25

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

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

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

Ответ 26

В чем дело с этим. Самый чистый способ сделать это -

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

Ответ 27

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

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

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

Ответ 28

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

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

function CurrentTime(){
  alert(TimeStamp);
}

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

Ответ 29

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