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

1811

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

  • 343
    var currentTime = new Date();
  • 10
    Смотрите документацию для объекта Date . Есть примеры.
Показать ещё 7 комментариев
Теги:
date

44 ответа

2391
Лучший ответ

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

  • 10
    как получить час и минуты
  • 6
    спасибо за код .. но что я до сих пор не понимаю, так это строка if (dd <10) {dd = '0' + dd} ... почему <10? из того, что я понимаю из кода, если символ дня меньше 2, просто добавьте предшествующий 0 перед днем ... но почему 10?
Показать ещё 11 комментариев
358

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

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

  • 5
    Выглядит хорошо, чтобы быть правдой. Есть ли минусы к этому?
  • 4
    Я так не думаю :) Кажется, довольно просто!
Показать ещё 14 комментариев
190

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

Если вам нужно что-то простое для конечного пользователя... 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, он имеет много светских методов, которые требуют учебного момента, как если бы это был язык. Mine здесь использует тот же общий формат, что и 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

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

В этом мод символы формата вдохновлены PHP: date. Полный список приведен в разделе 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'
    • '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-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 \, чтобы избежать символа.


  • 13
    @KamranAhmed Почти 2 года и более 40 голосов спустя, я бы сказал, что усилия того стоили. Лол. С тех пор я расширил этот класс лично, но не загрузил, так как я думал, что большинство людей будет использовать этот другой плагин для даты, который я рекомендую, но я думаю, я должен сделать его более «публичным» и добавить его здесь.
  • 14
    момент.js теперь вещь, которую вы бы использовали в эти дни
Показать ещё 4 комментария
128

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

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

document.write(today);
  • 31
    Это, кажется, единственный ответ, который фактически отвечает на вопрос. Все остальные отвечают о том, как отформатировать дату в виде строки.
  • 0
    ++ лучший ответ в этой теме
Показать ещё 2 комментария
115

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

Чтобы получить формат как "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)

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

  • 1
    Это по-прежнему не удается из-за сдвига часового пояса.
  • 3
    Почему это не принятый ответ, самый простой и использует встроенные функции
88

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

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
  • 0
    Никогда не используйте DOM document.write() манипуляций, console.log() или другие параметры
65

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

  • 10
    Это лучшее время, которое я нашел!
  • 7
    Поддерживает локализацию как шарм.
Показать ещё 3 комментария
49

Вы можете использовать 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>
  • 7
    Лучший ответ, MomentJs выглядит потрясающе.
  • 24
    Момент излишний для получения текущей даты.
Показать ещё 4 комментария
46

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

document.write(d)

Чтобы разбить его на шаги:

  • (new Date()).toString() дает "Fri Jun 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"

  • 2
    Мне нужно было время в 00:00:00, и я не хотел перестраивать его вручную; Шаг 2 приводит меня туда отлично. Престижность!
  • 3
    Вы можете сохранить несколько байтов следующим образом: Date().split(' ').splice(1,3).join(' ')
Показать ещё 2 комментария
40
var date = new Date().toLocaleDateString("en-US");

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

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

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

  • 0
    Здорово, работает на Chrome. К сожалению, не работает на PhantomJS с 22/4/2016
38

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

    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);
  • 0
    Никогда не используйте DOM document.write() манипуляций, console.log() или другие параметры
  • 1
    Обновлено, спасибо @jasonleonhard :)
Показать ещё 1 комментарий
30

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

new Date().toLocaleString();

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

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

  • 1
    Ууу наконец-то ...
22

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

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

2018-03-10

20

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

  • 10
    если вы используете jquery ui с датчиком, вы можете использовать $ .datepicker.formatDate ('гг / мм / дд', новая дата ())
18

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

var now = Date.now()

ссылка:

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

  • 0
    Это было в основном все, что мне было нужно. var dtToday = new Date(date.now);
15

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

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

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

14

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

  • 0
    Лучший ответ ... Гораздо лучше, чем отмеченный ответ. Спасибо.
  • 0
    Я искал очень простую функцию семени, которая регулярно меняется. Этот ответ - настоящее удовольствие.
11

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

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

Так как 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 дату и время в формате 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',' '));
10
new Date().toDateString();

Результат:

"Wed Feb 03 2016"

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

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

6

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

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

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

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

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

6

Однострочное решение JS:

ТЛ; др

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 last и chrome return todaysDate = "2/7/2017"
"works" * в IE10 +

РЕДАКТИРОВАТЬ 2/7/2017

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

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

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

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

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

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

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

6

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

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

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

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

  • 1
    Это будет возвращать ошибки, как это 3/4/2018, лучше использовать new Date().toJSON().slice(0,10) .
  • 0
    Это идеально подходит для простого получения даты для просмотра или для информации в журнале консоли или для пользовательского интерфейса. Лучше для меня без .slice(0,10)
4

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

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

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

3

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

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

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

3

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

new Date( 3600000*Math.floor(Date.now()/3600000) )
3
var dateTimeToday = new Date();
var dateToday = new Date(
    dateTimeToday.getFullYear(), 
    (dateTimeToday.getMonth() + 1) /*Jan = 0! */, 
    dateTimeToday.getDate(), 
    0, 
    0, 
    0, 
    0);
  • 0
    Нам действительно нужен еще один ответ?
  • 0
    Я не нашел этот метод ни в одном из ответов, поэтому добавил его
3

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

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

function CurrentTime(){
  alert(TimeStamp);
}

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

  • 0
    Это вернет данные + время, например. «2018-4-6 16:20:22», и вопрос в том, как получить только дату.
2

Если вы ищете гораздо более детальный контроль над форматами даты, я настоятельно рекомендую проверить дату-FNS. Потрясающая библиотека - намного меньше, чем moment.js, и ее подход на основе функций делает ее намного быстрее, чем другие библиотеки на основе классов. Обеспечить большое количество операций, необходимых по датам.

https://date-fns.org/docs/Getting-Started

2

2,39 КБ. Один файл. https://github.com/rhroyston/clock-js

Просто пытаюсь помочь...

Изображение 2097

2

Pretty Print Date Like This.

1 июня 2015 года 11:36:48 утра

https://gist.github.com/Gerst20051/7d72693f722bbb0f6b58

1

Если вы ищете для форматирования в строку.

statusUpdate = "time " + new Date(Date.now()).toLocaleTimeString();

вывод "время 11:30:53"

1

Я думал, что вставлю то, что я использую для реальной даты:

function realDate(date){
    return date.getDate() + "/" + (date.getMonth()+1) + "/" + date.getUTCFullYear();
}

var ourdate = realDate(new Date);
1

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

let d = new Date();                      

this.dateField = element(by.xpath('xpath here'));
this.datetField.sendKeys((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear());
1

Попробуйте это. HTML

<p id="date"></p>

JS

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

Рабочая демонстрация текущей даты

Демо

  • 0
    к .........................
1

Это мой текущий любимый, потому что он и гибкий, и модульный. Это набор (по крайней мере) трех простых функций:

/**
 * Returns an array with date / time information
 * Starts with year at index 0 up to index 6 for milliseconds
 * 
 * @param {Date} date   date object. If falsy, will take current time.
 * @returns {[]}
 */
getDateArray = function(date) {
    date = date || new Date();
    return [
        date.getFullYear(),
        exports.pad(date.getMonth()+1, 2),
        exports.pad(date.getDate(), 2),
        exports.pad(date.getHours(), 2),
        exports.pad(date.getMinutes(), 2),
        exports.pad(date.getSeconds(), 2),
        exports.pad(date.getMilliseconds(), 2)
    ];
};

Здесь функция пэда:

 /**
 * Pad a number with n digits
 *
 * @param {number} number   number to pad
 * @param {number} digits   number of total digits
 * @returns {string}
 */
exports.pad = function pad(number, digits) {
    return new Array(Math.max(digits - String(number).length + 1, 0)).join(0) + number;
};

Наконец, я могу либо построить свою строку даты вручную, либо использовать простые функции для этого:

/**
 * Returns nicely formatted date-time
 * @example 2015-02-10 16:01:12
 *
 * @param {object} date
 * @returns {string}
 */
exports.niceDate = function(date) {
    var d = exports.getDateArray(date);
    return d[0] + '-' + d[1] + '-' + d[2] + ' ' + d[3] + ':' + d[4] + ':' + d[5];
};

/**
 * Returns a formatted date-time, optimized for machines
 * @example 2015-02-10_16-00-08
 *
 * @param {object} date
 * @returns {string}
 */
exports.roboDate = function(date) {
    var d = exports.getDateArray(date);
    return d[0] + '-' + d[1] + '-' + d[2] + '_' + d[3] + '-' + d[4] + '-' + d[5];
};
1
(function() { var d = new Date(); return new Date(d - d % 86400000); })()
  • 1
    Откуда 86400000 ?
  • 2
    Это количество миллисекунд в день: 60 секунд x 60 минут x 24 часа x 1000 - вы, вероятно, тоже узнаете это, если вам придется много возиться с датами в JavaScript ...
0

Этот ответ предназначен для людей, которые ищут дату в формате ISO-8601 и в часовом поясе. Это чистый JS для тех, кто не хочет включать какую-либо библиотеку дат.

      var date = new Date();
      var timeZone = date.toString();
      //Get timezone ( 'GMT+0200' )
      var timeZoneIndex = timeZone.indexOf('GMT');
      //Cut optional string after timezone ( '(heure de Paris)' )
      var optionalTimeZoneIndex = timeZone.indexOf('(');
      if(optionalTimeZoneIndex != -1){
          timeZone = timeZone.substring(timeZoneIndex, optionalTimeZoneIndex);
      }
      else{
          timeZone = timeZone.substring(timeZoneIndex);
      }
      //Get date with JSON format ( '2019-01-23T16:28:27.000Z' )
      var formattedDate = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toJSON();
      //Cut ms
      formattedDate = formattedDate.substring(0,formattedDate.indexOf('.'));
      //Add timezone
      formattedDate = formattedDate + ' ' + timeZone;
      console.log(formattedDate);

Напечатайте что-то вроде этого в консоли:

2019-01-23T17: 12: 52 GMT + 0100

JSFiddle: https://jsfiddle.net/n9mszhjc/4/

0

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

Но в настоящее время у нас есть хороший плагин для анализа, проверки, манипулирования и отображения даты и времени в JavaScript с помощью moment.js.

0

Очень рекомендую date-fns, который быстрее, чем Moment, модульный (просто импортируйте то, что вам нужно), и обрабатывает даты как неизменные, что очень эффективно. (Момент не будет поддерживать неизменность.)

import * as DateFns from 'date-fns';
...
console.log(DateFns.format(myDate, 'YYYY-MM-DD'));
0

Вы можете использовать мой DATE API, приведенный ниже, для ежедневного использования форматирования даты, а также получения текущей даты, вчера и т.д. Как использовать например

 var dt = new Date();  
       /// ANY DATE YOU WANT --  dt = new Date(""July 21, 1983 01:15:00"")

       dateObj = dt.getFormattedDate();

       alert( dateObj.isToday() );
       alert( dateObj.todayDay() );
       alert( dateObj.monthNameDayYear() );

(function () {

    fnDateProcessor = function () {
        var that = this;

        return {

            yyyymmdd: function (separator) {
                var fdate = this.formatDate(true, true) ,
                    separator = separator ? separator : "-";
                return fdate.year + separator + fdate.month + separator + fdate.day;
            },

            monthNameDayYear: function () {
                var fdate = this.formatDate(true, true);
                return fdate.monthName + " " + fdate.day + ", " + fdate.year;
            },

            ddmmyyyy: function (separator) {
                var fdate = this.formatDate(true, true) ,
                    separator = separator ? separator : "/";
                return fdate.day + separator + fdate.month + separator + fdate.year;
            },

            meridianTime: function () {
                var fdate = this.formatDate();
                return fdate.hour + ":" + fdate.minute + " " + fdate.meridian;
            },

            monthDay: function (separator) {

                var fdate = this.formatDate();
                separator = checkSeparator(separator);
                return fdate.monthName.substring(0, 3) + separator + fdate.day;

            },

            weekMonthDayYear: function () {
                var fdate = this.formatDate();
                //separator = checkSeparator(separator);

                return fdate.weekDay + " " + fdate.monthName.substring(0, 3) +
                    fdate.day + " ," + fdate.year;
            },

            timeZoneInclusive: function () {

                return new Date(that);
            },

            todayDay: function () { return new Date().getDate(); },
            todayMonth: function () { return new Date().getMonth() + 1; },
            dateDay: function () { return this.formatDate().day; },
            dateMonth: function () { return this.formatDate().month; },
            isToday: function () { return this.sameDate(new Date()); },
            isYesterday: function () {
                d = new Date(); d.setDate(d.getDate() - 1);
                return this.sameDate(d);
            },

            formatDate: function () {
                var zeroPaddedMnth = true, zeroPaddedDay = false,
                    zeroPaddedHr = false, zeroPaddedMin = true;
                // Possible to take Options arg that overide / merge to defaults

                var monthNames = [
                    "January", "February", "March",
                    "April", "May", "June", "July",
                    "August", "September", "October",
                    "November", "December"
                ];
                var weekDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

                var day = getFormattedDay(that.getDate(), zeroPaddedDay);
                var monthIndex = that.getMonth();
                var month = getFormattedMonth(monthIndex + 1, zeroPaddedMnth);
                var year = that.getFullYear();
                var wkDay = that.getDay();
                var hour = getFormattedHour(that.getHours(), zeroPaddedHr);
                var minute = getFormattedMinute(that.getMinutes(), zeroPaddedMin);
                var meridian = getMeridian(that.getHours());

                return {
                    "day": day, "monthName": monthNames[monthIndex], "month": month,
                    "weekDay": weekDays[wkDay], "year": year, "hour": hour, "minute": minute,
                    "meridian": meridian
                };
            },

            compareDate: function (d2) {     /// validates if caller is less than argument                            
                d2 = _isString(d2) ? new Date(d2) : d2;

                return !this.sameDate(d2)
                    && typeof d2 != "number"
                    ? that < d2 : false;
            },

            sameDate: function (d) {
                return that.getFullYear() === d.getFullYear()
                    && that.getDate() === d.getDate()
                    && that.getMonth() === d.getMonth();
            },

            dateAfter: function (separator) {
                var fdate = this.formatDate();
                var separator = separator ? separator : "-";
                return fdate.year + separator + fdate.month + separator + (fdate.day + 1);
            }

        };

    };


    function _isString(obj) {
        var toString = Object.prototype.toString;
        return toString.call(obj) == '[object String]';
    }

    function checkSeparator(separator) {
        // NOT GENERIC ... NEEDS REVISION
        switch (separator) {
            case " ": sep = separator; break;
            case ",": sep = " ,"; break;
            default:
                sep = " "; break;
        }

        return sep;
    }

    function getFormattedHour(h, zeroPadded) {
        h = h % 12;
        h = h ? h : 12;    //  12 instead of 00
        return zeroPadded ? addZero(h) : h;
    }

    function getFormattedMinute(m, zeroPadded) {

        return zeroPadded ? addZero(m) : m;
    }

    function getFormattedDay(dd, zeroPadded) {

        return zeroPadded ? addZero(dd) : dd;
    }
    function getFormattedMonth(mm, zeroPadded) {

        return zeroPadded ? addZero(mm) : mm;
    }

    function getMeridian(hr) {

        return hr >= 12 ? 'PM' : 'AM';
    }

    function addZero(i) {
        if (i < 10) {
            i = "0" + i;
        }
        return i;
    }


    Date.prototype.getFormattedDate = fnDateProcessor;

} ());
0

Основы

Если вы довольны форматом Sun Jan 24 2016 21:23:07 GMT+0100 (CET), вы можете просто использовать этот код:

var today = new Date();

Date.prototype.toLocaleDateString()

Если вы хотите отформатировать свой вывод, рассмотрите возможность использования Date.prototype.toLocaleDateString():

var today = new Date().toLocaleDateString('de-DE', {     
    weekday: 'long', 
    year: 'numeric',
    month: 'long',
    day: 'numeric'
});

Если вы выполнили этот код сегодня (январь 24ᵗʰ, 2016) в современном браузере, он создаст строку Sonntag, 24. Januar 2016. Старые браузеры могут генерировать другой результат, хотя, например, как, например. IE < 11 не поддерживает аргументы локалей или опций.

Переход на

Если Date.prototype.toLocaleDateString() недостаточно гибко, чтобы выполнить любую необходимую вам потребность, вы можете захотеть рассмотрите создание пользовательского объекта Date, который выглядит следующим образом:

var DateObject = (function() {
    var monthNames = [
      "January", "February", "March",
      "April", "May", "June", "July",
      "August", "September", "October",
      "November", "December"
    ];
    var date = function(str) {
        this.set(str);
    };
    date.prototype = {
        set : function(str) {
            var dateDef = str ? new Date(str) : new Date();
            this.day = dateDef.getDate();
            this.dayPadded = (this.day < 10) ? ("0" + this.day) : "" + this.day;
            this.month = dateDef.getMonth() + 1;
            this.monthPadded = (this.month < 10) ? ("0" + this.month) : "" + this.month;
            this.monthName = monthNames[this.month - 1];
            this.year = dateDef.getFullYear();
        }
    };
    return date;
})();

Если вы включили этот код и выполнили new DateObject() сегодня (январь 24ᵗʰ, 2016), он создаст объект со следующими свойствами:

day: 24
dayPadded: "24"
month: 1
monthPadded: "01"
monthName: "January"
year: 2016

Ещё вопросы

Сообщество Overcoder
Наверх
Меню