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

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

вопрос задан 7.10.2009
Suresh
12105 репутация

46 ответов


  • 2077 рейтинг

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

    ответ дан Samuel Meddows, с репутацией 21700, 8.02.2011
  • 349 рейтинг

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

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

    ответ дан Varun Natraaj, с репутацией 4621, 29.09.2013
  • 191 рейтинг

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

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

    Это обновление поставляется в двух вариантах, все еще относительно небольших, хотя и не таких маленьких, как мой выше, оригинальный ответ. Если вы хотите очень мало, пойдите с этим.
    Также Примечание: это все еще менее раздуто, чем moment.js. Хотя moment.js хорош, imo, он имеет много светских методов, которые требуют учебного момента, как если бы это был язык. Mine здесь использует тот же общий формат, что и 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) Более традиционный метод «все-в-одном». Имеет все возможности предыдущего, но вызывается методом с параметром 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' == 'Ymd h: i: s'
      • 'postgreSQL' == 'Y.z'
      • 'postgreSQL2' == 'Yz'
      • 'soap' == 'Ymd \\ TH: i: s.u'
      • 'soap2' == 'Ymd \\ TH: i: s.uP'
      • 'unixTimestamp' == '@U'
      • 'xmlrpc' == 'Ymd \\ TG: i: s'
      • 'xmlrpcCompact' == 'Ymd \\ tGis'
      • 'wddx' == 'Ynj \\ TG: i: s'
    • «константы»
      • 'AMERICAN' == 'F j Y'
      • 'AMERICANSHORT' == 'm /d /Y'
      • 'AMERICANSHORTWTIME' == 'm /d /Y h: i: sA'
      • 'ATOM' == 'Ymd \\ TH: i: sP'
      • 'COOKIE' == 'l dMY H: i: s T'
      • 'ЕВРОПЕЙСКИЙ' == 'j F Y'
      • 'EUROPEANSHORT' == 'dmY'
      • 'EUROPEANSHORTWTIME' == 'dmY H: i: s'
      • 'ISO8601' == 'Ymd \\ TH: i: sO'
      • 'LEGAL' == 'j F Y'
      • 'RFC822' == 'D d M y H: i: s O'
      • 'RFC850' == 'l dMy H: i: s T'
      • 'RFC1036' == 'D d M y H: i: s O'
      • 'RFC1123' == 'D d MYH: i: s O'
      • 'RFC2822' == 'D d MYH: i: s O'
      • 'RFC3339' == 'Ymd \\ TH: i: sP'
      • 'RSS' == 'D d MYH: i: s O'
      • 'W3C' == 'Ymd \\ 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 \ чтобы избежать символа.


    ответ дан SpYk3HH, с репутацией 18989, 10.02.2012
  • 120 рейтинг

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

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

    ответ дан Marshal, с репутацией 2140, 2.09.2014
  • 92 рейтинг

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

     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
     
    ответ дан Jimmy M, с репутацией 1158, 15.02.2012
  • 79 рейтинг

    Как можно скорее.

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

    ответ дан Damjan Pavlica, с репутацией 6866, 10.03.2016
  • 57 рейтинг

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

    ответ дан benjamin.keen, с репутацией 1131, 12.12.2012
  • 45 рейтинг

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

    ответ дан Morad, с репутацией 1185, 16.08.2014
  • 42 рейтинг

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

    ответ дан Rishabh Marya, с репутацией 531, 28.06.2013
  • 36 рейтинг
     var date = new Date().toLocaleDateString("en-US");
     

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

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

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

    ответ дан Dunaevsky Maxim, с репутацией 1492, 9.07.2014
  • 34 рейтинг

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

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

    ответ дан roshan, с репутацией 1539, 3.11.2013
  • 25 рейтинг

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

     new Date().toLocaleString();
     

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

    27.02.2012, 9:15:41

    ответ дан WhereDatApp.com, с репутацией 18136, 18.07.2016
  • 20 рейтинг

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

    ответ дан eomeroff, с репутацией 3613, 26.06.2012
  • 19 рейтинг

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

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

    2018-03-10

    ответ дан Aung Htet, с репутацией 411, 10.03.2018
  • 17 рейтинг

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

     var now = Date.now()
     

    Справка:

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

    ответ дан Jose Rojas, с репутацией 2566, 15.05.2015
  • 13 рейтинг

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

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

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

    ответ дан user1338062, с репутацией 6626, 11.08.2015
  • 10 рейтинг

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

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

    ответ дан Phil Ricketts, с репутацией 2844, 30.06.2015
  • 8 рейтинг
     new Date().toDateString();
     

    Результат:

    «Ср Фев 03 2016»

    ответ дан user3519897, с репутацией 343, 3.02.2016
  • 8 рейтинг

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

    ответ дан Blair Anderson, с репутацией 10130, 1.12.2017
  • 7 рейтинг
     new Date().toISOString().slice(0,10); 
     

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

    ответ дан Toucouleur, с репутацией 463, 1.10.2015
  • 5 рейтинг

    Однострочное решение 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];

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

    ответ дан Cameron Donahue, с репутацией 127, 20.01.2017
  • 5 рейтинг

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

     <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>
     
    ответ дан Roger, с репутацией 1358, 8.02.2013
  • 5 рейтинг

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

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

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

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

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

    ответ дан Souvik, с репутацией 305, 1.02.2017
  • 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 (). ссылка

    ответ дан Akhil, с репутацией 191, 11.08.2015
  • 4 рейтинг

    Поскольку 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',' ')); 

    ответ дан jafarbtech, с репутацией 4492, 18.05.2018
  • 4 рейтинг

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

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

    ответ дан ISONecroMAn, с репутацией 522, 31.10.2015
  • 3 рейтинг
    var dateTimeToday = new Date();
    var dateToday = new Date(
        dateTimeToday.getFullYear(), 
        (dateTimeToday.getMonth() + 1) /*Jan = 0! */, 
        dateTimeToday.getDate(), 
        0, 
        0, 
        0, 
        0);
    
    ответ дан Jas, с репутацией 196, 12.04.2015
  • 3 рейтинг

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

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

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

    ответ дан Jayant Patil, с репутацией 933, 17.08.2016
  • 3 рейтинг

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

     new Date( 3600000*Math.floor(Date.now()/3600000) )
     
    ответ дан marverix, с репутацией 2251, 1.10.2015
  • 3 рейтинг

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

     var date = new Date();
    var TimeStamp = date.toLocaleString();
    
    function CurrentTime(){
      alert(TimeStamp);
    }
     

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

    ответ дан Brock Davis, с репутацией 141, 19.01.2015
  • 2 рейтинг

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

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

    введите описание изображения здесь

    ответ дан Ron Royston, с репутацией 5124, 3.05.2016
  • 2 рейтинг

    Pretty Print Date Like This.

    1 июня 2015 г. 11:36:48

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

    ответ дан Andrew Anthony Gerst, с репутацией 2224, 1.06.2015
  • 1 рейтинг
    (function() { var d = new Date(); return new Date(d - d % 86400000); })()
    
    ответ дан Andrea, с репутацией 545, 22.04.2014
  • 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>
     

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

    демонстрация

    ответ дан Shanu Shaji, с репутацией 146, 16.05.2015
  • 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];
    };
     
    ответ дан Fannon, с репутацией 180, 10.02.2015
  • 1 рейтинг

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

     let d = new Date();                      
    
    this.dateField = element(by.xpath('xpath here'));
    this.datetField.sendKeys((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear());
     
    ответ дан RRR, с репутацией 32, 12.12.2017
  • 0 рейтинг

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

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

    ответ дан Ramesh Rajendran, с репутацией 17575, 27.02.2018
  • 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;
    
    } ());
     
    ответ дан Yergalem, с репутацией 461, 10.05.2017
  • 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
     
    ответ дан John Slegers, с репутацией 26343, 24.01.2016