it-swarm.com.ru

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

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

1875
Suresh

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

Это даст вам сегодняшнюю дату в формате мм/дд/гггг.

Просто измените today = mm +'/'+ dd +'/'+ yyyy; на любой формат, который вы пожелаете.

2253
Samuel Meddows

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

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

374
Varun Natraaj

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

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

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

Flavor 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

Flavor 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'
    • 'мыло' == '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»
    • «АМЕРИКАНСКИЙ ХОРВ» == «м/д/г»
    • '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'
    • "ЕВРОПЕЙСКИЙ ХОРТ" == "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'

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


199
SpYk3HH

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

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

document.write(today);

131
Marshal

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

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

115
Damjan Pavlica

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

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
93
Jimmy M

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

62
benjamin.keen

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

51
Morad

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»

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

Также вы можете вызвать метод toLocaleDateString с двумя параметрами:

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

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

39
Dunaevsky Maxim

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

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

36
roshan

Более чистая и простая версия:

new Date().toLocaleString();

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

27.02.2017, 9:15:41

29
Oded Breiner

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

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

2018-03-10

21
Aung Htet

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

21
eomeroff

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

var now = Date.now()

ссылка:

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

18
Jose Rojas

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

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

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

15
user1338062

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

13
Blair Anderson

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

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

11
Phil Ricketts
new Date().toDateString();

Результат:

«Ср 3 февраля 2016»

10
user3519897

Поскольку 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

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

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

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

8
Toucouleur

Однострочное решение 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 самое последнее и Chrome Return todaysDate = "2/7/2017" 
«работает» * в IE10 +

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

Я обнаружил, что 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"

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

6
Cameron Donahue

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

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

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

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

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

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

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

6
Souvik

Вы можете оформить заказ

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

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

4
Akhil

Что в этом такого? .. Самый чистый способ сделать это 

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

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

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

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

Будет напечатана текущая дата в формате дд/мм/гггг

3
Jayant Patil

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

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

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

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

function CurrentTime(){
  alert(TimeStamp);
}

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

3
Brock Davis

2.39KB минимизировано. Один файл. https://github.com/rhroyston/clock-js

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

 enter image description here

2
Ron Royston

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

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

2
jyotibisht

Довольно распечатать дату, как это.

1 июня 2015 11:36:48

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

2
Andy

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

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

var ourdate = realDate(new Date);
1
Waheed
(function() { var d = new Date(); return new Date(d - d % 86400000); })()
1
Andrea

Попробуйте это .. 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>

Рабочая демоверсия на текущую дату

Демо

1
Shanu Shaji

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

/**
 * 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
Fannon

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

let d = new Date();                      

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

Этот ответ предназначен для людей, которые ищут дату в формате, подобном 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
alain.janinm

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

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

0
Ramesh Rajendran

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

Основы

Если вас устраивает формат 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
0
John Slegers

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

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

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

0
Harry Bosh

С возможностью рендеринга в произвольном формате и использованием названия месяца в разных локалях:

const locale = 'en-us';
const d = new Date(date);

const day = d.getDate();
const month = d.toLocaleString(locale, { month: 'long' });
const year = d.getFullYear();

const time = d.toLocaleString(locale, { hour12: false, hour: 'numeric', minute: 'numeric'});

return `${month} ${day}, ${year} @ ${time}`; // May 5, 2019 @ 23:41
0
Alex Ivasyuv