Как отформатировать дату JavaScript

Как я могу отформатировать объект даты JavaScript для печати как 10-Aug-2010?

30 ответов


внимание: есть лучшие ответы ниже. Этот ответ был написан в 2010 году, и с тех пор появились новые и лучшие решения. ОП должна принять другой ответ.

function formatDate(date) {
  var monthNames = [
    "January", "February", "March",
    "April", "May", "June", "July",
    "August", "September", "October",
    "November", "December"
  ];

  var day = date.getDate();
  var monthIndex = date.getMonth();
  var year = date.getFullYear();

  return day + ' ' + monthNames[monthIndex] + ' ' + year;
}

console.log(formatDate(new Date()));  // show current date-time in console

вы можете редактировать массив monthNames использовать Jan, Feb, Mar и т. д..


использовать toLocaleDateString();

на toLocaleDateString() метод возвращает строку с чувствительным к языку представлением части даты даты. Аргументы locales и options позволяют приложениям указывать язык, соглашения о форматировании которого должны использоваться, и настраивать поведение функции.

значения, которые вы можете передать в опции для разных ключей:

  1. день:
    Представление дня.
    Возможные значения: "числовые", "2-значные".
  2. в будни:
    Представление буднего дня.
    Возможные значения - "узкий", "короткий", "длинный".
  3. год:
    Представление года.
    Возможные значения: "числовые", "2-значные".
  4. месяц:
    Представление месяца.
    Возможные значения: "числовой", "2-значный", "узкий", " короткий", "длинный."
  5. час
    Представление часа.
    Возможные значения: "числовые", "2-значные".
  6. минуту: Представление минуты.
    Возможные значения: "числовые", "2-значные".
  7. второй:
    Представление второго.
    Возможные значения-"числовые", 2-значные.

все эти ключи являются необязательными. Вы можете изменить количество значений параметров, основанных на ваших требованиях, и это также будет отражать наличие каждого срока даты.

Примечание: Если вы хотите только настроить параметры содержимого, но по-прежнему использовать текущую локаль, передавая null для первого параметра вызовет ошибку. Использовать undefined вместо.

на разных языках:

  1. "en-US": На Английском Языке
  2. "привет-в": для Хинди
  3. "ja-JP": Для Японцев

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

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var today  = new Date();

console.log(today.toLocaleDateString("en-US")); // 9/17/2016
console.log(today.toLocaleDateString("en-US", options)); // Saturday, September 17, 2016
console.log(today.toLocaleDateString("hi-IN", options)); // शनिवार, 17 सितंबर 2016

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

// Example
9/17/2016, 1:21:34 PM

ссылки:


использовать дата.формат библиотеки:

var dateFormat = require('dateformat');
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");

возвращает:

Saturday, June 9th, 2007, 5:46:21 PM 

dateformat на npm

http://jsfiddle.net/phZr7/1/


Если вам нужно быстро отформатировать дату с помощью простого JavaScript, используйте getDate, getMonth + 1, getFullYear, getHours и getMinutes:

var d = new Date();

var datestring = d.getDate()  + "-" + (d.getMonth()+1) + "-" + d.getFullYear() + " " +
d.getHours() + ":" + d.getMinutes();

// 16-5-2015 9:50

или, если вам нужно, чтобы он был дополнен нулями:

var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" +
    d.getFullYear() + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2);

// 16-05-2015 09:50

Ну, что я хотел, чтобы преобразовать текущую дату в в MySQL дружественная строка даты, такая как 2012-06-23, и использовать эту строку в качестве параметра в одном из моих запросов. Простое решение, которое я нашел, таково:

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

имейте в виду, что указанные выше решения не учитывать ваш часовой сдвиг.

вместо этого вы можете использовать эту функцию:

function toJSONLocal (date) {
    var local = new Date(date);
    local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
    return local.toJSON().slice(0, 10);
}

это даст вам правильную дату, если вы выполнение этого кода в начале / конце дня.


Если вы уже используя jQuery UI в вашем проекте вы можете сделать это следующим образом:

var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));

// formatted will be 'Jul 8, 2014'

некоторые параметры формата даты datepicker для воспроизведения доступны здесь.


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

для фиксированных форматов, простая функция делает работу. В следующем примере создается международный формат гггг-ММ-ДД:

function dateToYMD(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1; //Month from 0 to 11
    var y = date.getFullYear();
    return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}

console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

формат OP может быть сгенерирован следующим образом:

function dateToYMD(date) {
    var strArray=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var d = date.getDate();
    var m = strArray[date.getMonth()];
    var y = date.getFullYear();
    return '' + (d <= 9 ? '0' + d : d) + '-' + m + '-' + y;
}
console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

Примечание: однако обычно не рекомендуется расширять стандартные библиотеки JavaScript (например, путем добавления этой функции к прототипу Date).

более продвинутая функция может генерировать настраиваемый вывод на основе параметра формата.

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

стандартные функции форматирования ECMAScript:

начиная с более поздних версий ECMAScript,Date класс имеет определенное форматирование функции:

toDateString: реализация зависит, показывать только дату.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.todatestring

new Date().toDateString(); // e.g. "Fri Nov 11 2016"

toISOString: показать дату и время ISO 8601.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring

new Date().toISOString(); // e.g. "2016-11-21T08:00:00.000Z"

метод toJSON: Stringifier для JSON.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tojson

new Date().toJSON(); // e.g. "2016-11-21T08:00:00.000Z"

toLocaleDateString: зависит от реализации, дата в локали формат.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaledatestring

new Date().toLocaleDateString(); // e.g. "21/11/2016"

методом tolocalestring: зависит от реализации, дата и время в формате локали.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocalestring

new Date().toLocaleString(); // e.g. "21/11/2016, 08:00:00 AM"

toLocaleTimeString: зависит от реализации, в формате локали.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaletimestring

new Date().toLocaleTimeString(); // e.g. "08:00:00 AM"

toString: Generic toString для даты.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tostring

new Date().toString(); // e.g. "Fri Nov 21 2016 08:00:00 GMT+0100 (W. Europe Standard Time)"

Примечание: можно генерировать пользовательские выходные данные из этих форматирования >

new Date().toISOString().slice(0,10); //return YYYY-MM-DD

примеры сниппетов:

console.log("1) "+  new Date().toDateString());
console.log("2) "+  new Date().toISOString());
console.log("3) "+  new Date().toJSON());
console.log("4) "+  new Date().toLocaleDateString());
console.log("5) "+  new Date().toLocaleString());
console.log("6) "+  new Date().toLocaleTimeString());
console.log("7) "+  new Date().toString());
console.log("8) "+  new Date().toISOString().slice(0,10));

Я думаю, вы можете просто использовать нестандартное дата метод toLocaleFormat(formatString)

formatString: строка формата в том же формате, ожидаемом strftime() в с.

var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011

ссылки:


простой JavaScript является лучшим выбором для небольших onetimers.

С другой стороны, если вам нужно больше свиданий, MomentJS является отличным решением.

например:

moment().format('YYYY-MM-DD HH:m:s');     // now() -> 2015-03-24 14:32:20
moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow();        // 11 hours ago
moment().endOf('day').fromNow();          // in 13 hours

в современных браузерах (*), вы можете просто сделать это:

var today = new Date().toLocaleDateString('en-GB', {
    day : 'numeric',
    month : 'short',
    year : 'numeric'
}).split(' ').join('-');

выход, если выполнено сегодня (январь 24ᵗʰ 2016,):

'24-Jan-2016'

(*) согласно MDN, "современные браузеры" означает Chrome 24+, Firefox 29+, Internet Explorer 11, Edge 12+, Opera 15+ & Safari сборка.


вы должны взглянуть на дата.js. Он добавляет много удобных помощников для работы с датами, например, в вашем случае:

var date = Date.parse('2010-08-10');
console.log(date.toString('dd-MMM-yyyy'));

начало работы:http://www.datejs.com/2007/11/27/getting-started-with-datejs/


Я могу получить ваш запрошенный формат в одной строке, не используя библиотеки и методы даты, просто regex:

var d = (new Date()).toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/,'--');
// date will be formatted as "14-Oct-2015" (pass any date object in place of 'new Date()')

Update: как указал @RobG, вывод даты.прототип.toString () зависит от реализации. Таким образом, используйте с осторожностью и при необходимости измените для своих реализаций, если вы используете это решение. В моем тестировании это надежно работает в Северной Америке, где основные браузеры (Chrome, Safari, Firefox и IE) возвращают один и тот же строковый формат.


@Sébastien -- альтернативная поддержка всех браузеров

new Date(parseInt(496407600)*1000).toLocaleDateString('de-DE', {
year: 'numeric',
month: '2-digit',
day: '2-digit'
}).replace(/\./g, '/');

документация: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString


Использование шаблона строки ECMAScript Edition 6 (ES6/ES2015):

let d = new Date();
let formatted = `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`;

Если вам нужно изменить разделители:

const delimiter = '/';
let formatted = [d.getFullYear(), d.getMonth() + 1, d.getDate()].join(delimiter);

вот код, который я только что написал, чтобы обработать форматирование даты для проекта, над которым я работаю. Он имитирует функциональность форматирования даты PHP в соответствии с моими потребностями. Не стесняйтесь использовать его, это просто расширение уже существующего объекта Date (). Это может быть не самое элегантное решение, но это работает для моих потребностей.

var d = new Date(); 
d_string = d.format("m/d/Y h:i:s");

/**************************************
 * Date class extension
 * 
 */
    // Provide month names
    Date.prototype.getMonthName = function(){
        var month_names = [
                            'January',
                            'February',
                            'March',
                            'April',
                            'May',
                            'June',
                            'July',
                            'August',
                            'September',
                            'October',
                            'November',
                            'December'
                        ];

        return month_names[this.getMonth()];
    }

    // Provide month abbreviation
    Date.prototype.getMonthAbbr = function(){
        var month_abbrs = [
                            'Jan',
                            'Feb',
                            'Mar',
                            'Apr',
                            'May',
                            'Jun',
                            'Jul',
                            'Aug',
                            'Sep',
                            'Oct',
                            'Nov',
                            'Dec'
                        ];

        return month_abbrs[this.getMonth()];
    }

    // Provide full day of week name
    Date.prototype.getDayFull = function(){
        var days_full = [
                            'Sunday',
                            'Monday',
                            'Tuesday',
                            'Wednesday',
                            'Thursday',
                            'Friday',
                            'Saturday'
                        ];
        return days_full[this.getDay()];
    };

    // Provide full day of week name
    Date.prototype.getDayAbbr = function(){
        var days_abbr = [
                            'Sun',
                            'Mon',
                            'Tue',
                            'Wed',
                            'Thur',
                            'Fri',
                            'Sat'
                        ];
        return days_abbr[this.getDay()];
    };

    // Provide the day of year 1-365
    Date.prototype.getDayOfYear = function() {
        var onejan = new Date(this.getFullYear(),0,1);
        return Math.ceil((this - onejan) / 86400000);
    };

    // Provide the day suffix (st,nd,rd,th)
    Date.prototype.getDaySuffix = function() {
        var d = this.getDate();
        var sfx = ["th","st","nd","rd"];
        var val = d%100;

        return (sfx[(val-20)%10] || sfx[val] || sfx[0]);
    };

    // Provide Week of Year
    Date.prototype.getWeekOfYear = function() {
        var onejan = new Date(this.getFullYear(),0,1);
        return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7);
    } 

    // Provide if it is a leap year or not
    Date.prototype.isLeapYear = function(){
        var yr = this.getFullYear();

        if ((parseInt(yr)%4) == 0){
            if (parseInt(yr)%100 == 0){
                if (parseInt(yr)%400 != 0){
                    return false;
                }
                if (parseInt(yr)%400 == 0){
                    return true;
                }
            }
            if (parseInt(yr)%100 != 0){
                return true;
            }
        }
        if ((parseInt(yr)%4) != 0){
            return false;
        } 
    };

    // Provide Number of Days in a given month
    Date.prototype.getMonthDayCount = function() {
        var month_day_counts = [
                                    31,
                                    this.isLeapYear() ? 29 : 28,
                                    31,
                                    30,
                                    31,
                                    30,
                                    31,
                                    31,
                                    30,
                                    31,
                                    30,
                                    31
                                ];

        return month_day_counts[this.getMonth()];
    } 

    // format provided date into this.format format
    Date.prototype.format = function(dateFormat){
        // break apart format string into array of characters
        dateFormat = dateFormat.split("");

        var date = this.getDate(),
            month = this.getMonth(),
            hours = this.getHours(),
            minutes = this.getMinutes(),
            seconds = this.getSeconds();
        // get all date properties ( based on PHP date object functionality )
        var date_props = {
            d: date < 10 ? '0'+date : date,
            D: this.getDayAbbr(),
            j: this.getDate(),
            l: this.getDayFull(),
            S: this.getDaySuffix(),
            w: this.getDay(),
            z: this.getDayOfYear(),
            W: this.getWeekOfYear(),
            F: this.getMonthName(),
            m: month < 10 ? '0'+(month+1) : month+1,
            M: this.getMonthAbbr(),
            n: month+1,
            t: this.getMonthDayCount(),
            L: this.isLeapYear() ? '1' : '0',
            Y: this.getFullYear(),
            y: this.getFullYear()+''.substring(2,4),
            a: hours > 12 ? 'pm' : 'am',
            A: hours > 12 ? 'PM' : 'AM',
            g: hours % 12 > 0 ? hours % 12 : 12,
            G: hours > 0 ? hours : "12",
            h: hours % 12 > 0 ? hours % 12 : 12,
            H: hours,
            i: minutes < 10 ? '0' + minutes : minutes,
            s: seconds < 10 ? '0' + seconds : seconds           
        };

        // loop through format array of characters and add matching data else add the format character (:,/, etc.)
        var date_string = "";
        for(var i=0;i<dateFormat.length;i++){
            var f = dateFormat[i];
            if(f.match(/[a-zA-Z]/g)){
                date_string += date_props[f] ? date_props[f] : '';
            } else {
                date_string += f;
            }
        }

        return date_string;
    };
/*
 *
 * END - Date class extension
 * 
 ************************************/

Если вы используете jQuery UI в своем коде, есть встроенная функция formatDate(). Я использую его таким образом, чтобы отформатировать сегодняшнюю дату:

var testdate = Date();
testdate = $.datepicker.formatDate( "d-M-yy",new Date(testdate));
alert(testdate);

Вы можете ознакомиться многие другие примеры даты форматирования в документации jQuery UI.


у нас есть много решений для этого, но я думаю, что лучший из них-это момент.js. Поэтому я лично предлагаю использовать момент.js для операций даты и времени.

console.log(moment().format('DD-MMM-YYYY'));
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

на JavaScript решение, без использования каких-либо внешних библиотек:

var now = new Date()
months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
var formattedDate = now.getDate()+"-"+months[now.getMonth()]+"-"+now.getFullYear()
alert(formattedDate)

вот как я реализовал для своих плагинов npm

var monthNames = [
  "January", "February", "March",
  "April", "May", "June", "July",
  "August", "September", "October",
  "November", "December"
];

var Days = [
  "Sunday", "Monday", "Tuesday", "Wednesday",
  "Thursday", "Friday", "Saturday"
];

var formatDate = function(dt,format){
  format = format.replace('ss', pad(dt.getSeconds(),2));
  format = format.replace('s', dt.getSeconds());
  format = format.replace('dd', pad(dt.getDate(),2));
  format = format.replace('d', dt.getDate());
  format = format.replace('mm', pad(dt.getMinutes(),2));
  format = format.replace('m', dt.getMinutes());
  format = format.replace('MMMM', monthNames[dt.getMonth()]);
  format = format.replace('MMM', monthNames[dt.getMonth()].substring(0,3));
  format = format.replace('MM', pad(dt.getMonth()+1,2));
  format = format.replace(/M(?![ao])/, dt.getMonth()+1);
  format = format.replace('DD', Days[dt.getDay()]);
  format = format.replace(/D(?!e)/, Days[dt.getDay()].substring(0,3));
  format = format.replace('yyyy', dt.getFullYear());
  format = format.replace('YYYY', dt.getFullYear());
  format = format.replace('yy', (dt.getFullYear()+"").substring(2));
  format = format.replace('YY', (dt.getFullYear()+"").substring(2));
  format = format.replace('HH', pad(dt.getHours(),2));
  format = format.replace('H', dt.getHours());
  return format;
}

pad = function(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}

new Date().toLocaleDateString()

// "3/21/2018"

больше документации на developer.mozilla.org


полезным и гибким способом форматирования DateTimes в JavaScript является Intl.DateTimeFormat:

var date = new Date();
var options = { year: 'numeric', month: 'short', day: '2-digit'};
var _resultDate = new Intl.DateTimeFormat('en-GB', options).format(date);
// The _resultDate is: "12 Oct 2017"
// Replace all spaces with - and then log it.
console.log(_resultDate.replace(/ /g,'-'));

Результат: "12-Oct-2017"

форматы даты и времени можно настроить с помощью аргумента options.

на Intl.DateTimeFormat object является конструктором для объектов, которые включают дату и время, зависящие от языка форматирование.

синтаксис

new Intl.DateTimeFormat([locales[, options]])
Intl.DateTimeFormat.call(this[, locales[, options]])

параметры

районов

необязательно. Строка с тегом языка BCP 47 или массив таких строк. Общую форму и интерпретацию аргумента locales см. На странице Intl. Допускаются следующие ключи расширения Unicode:

nu
Numbering system. Possible values include: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
ca
Calendar. Possible values include: "buddhist", "chinese", "coptic", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamicc", "iso8601", "japanese", "persian", "roc".

опции

необязательно. Объект с некоторыми или всеми из следующих свойства:

localeMatcher

алгоритм сопоставления локали для использования. Возможные значения:"lookup" и "best fit" по умолчанию:"best fit". Сведения об этом параметре см. На странице Intl.

часовой пояс

часовой пояс для использования. Единственный реализаций стоимость должна признать "UTC"; по умолчанию используется часовой пояс среды выполнения по умолчанию. Реализации могут также распознавать имена часовых поясов База данных часовых поясов IANA, например "Asia/Shanghai", "Asia/Kolkata", "America/New_York".

hour12

следует ли использовать 12-часовое время (в отличие от 24-часового времени). Возможные значения:true и false; значение по умолчанию зависит от локали.

formatMatcher

алгоритм сопоставления формата для использования. Возможные значения:"basic" и "best fit" по умолчанию:"best fit". См. следующие пункты для получения информации о использование этого свойства.

следующие свойства описывают компоненты даты-времени для использования в форматированном выводе и их желаемые представления. Реализации необходимы для поддержки по крайней мере следующих подмножеств:

weekday, year, month, day, hour, minute, second
weekday, year, month, day
year, month, day
year, month
month, day
hour, minute, second
hour, minute

реализации могут поддерживать другие подмножества, и запросы будут согласовываться со всеми доступными комбинациями подмножеств-представлений, чтобы найти наилучшее соответствие. Два алгоритма доступны для этого согласования и выбраны formatMatcher свойство: полностью указано "basic" алгоритм и зависимый от реализации алгоритм "best fit".

будни

представление дня недели. Возможные значения:"narrow", "short", "long".

представление эпохи. Возможные значения:"narrow", "short", "long".

год

представление год. Возможные значения:"numeric", "2-digit".

месяц

представление месяца. Возможные значения:"numeric", "2-digit", "narrow", "short", "long".

день

представление дня. Возможные значения:"numeric", "2-digit".

час

представление часов. Возможные значения:"numeric", "2-digit".

минуту

представление минут. Возможные значения:"numeric", "2-digit".

второй

представление второго. Возможные значения:"numeric", "2-digit".

timeZoneName

представление имени часового пояса. Возможные значения:"short", "long". Значение по умолчанию для каждого свойства компонента date-time не определено, но если все свойства компонента не определены, то год, месяц и день считаются "numeric".

Проверить Онлайн

Дополнительные Детали


var today = new Date();
var formattedToday = today.toLocaleDateString() + ' ' + today.toLocaleTimeString();

OK, у нас есть что-то под названием Intl что очень полезно для форматирования даты в JavaScript:

ваша дата, как показано ниже:

var date = '10/8/2010';

и вы меняете дату, используя new Date () как показано ниже:

date = new Date(date);

и теперь вы можете отформатировать его любым способом, используя список районов, как показано ниже:

date = new Intl.DateTimeFormat('en-AU').format(date); // Australian date format: "8/10/2010" 


date = new Intl.DateTimeFormat('en-US').format(date); // USA date format: "10/8/2010" 


date = new Intl.DateTimeFormat('ar-EG').format(date);  // Arabic date format: "٨‏/١٠‏/٢٠١٠"

если вы точно хотите формат, который вы упомянули выше, вы можете сделать:

date = new Date(Date.UTC(2010, 7, 10, 0, 0, 0));
var options = {year: "numeric", month: "short", day: "numeric"};
date = new Intl.DateTimeFormat("en-AU", options).format(date).replace(/\s/g, '-');

и результатом будет:

"10-Aug-2010"

подробнее о API интернационализации ECMAScript (Intl) посетите здесь.


сахар.js имеет отличные расширения для объекта Date, включая дата.формат метод.

примеры из документации:

Date.create().format('{Weekday} {Month} {dd}, {yyyy}');

Date.create().format('{12hr}:{mm}{tt}')

Hi проверьте, помогает ли это с вашей проблемой.

var d = new Date();

var options = {   
    day: 'numeric',
    month: 'long', 
    year: 'numeric'
};

console.log(d.toLocaleDateString('en-ZA', options));

Date to locate format


для любого, кто ищет действительно простое решение ES6 для копирования и вставки.

const dateToString = d => `${d.getFullYear()}-${('00' + (d.getMonth() + 1)).slice(-2)}-${('00' + d.getDate()).slice(-2)}` 

// how to use:
const myDate = new Date(Date.parse('04 Dec 1995 00:12:00 GMT'))
console.log(dateToString(myDate)) // 1995-12-04

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

function init(){
    var d = new Date();
    var day = d.getDate();
    var x = d.toDateString().substr(4, 3);
    var year = d.getFullYear();
    document.querySelector("#mydate").innerHTML = day + '-' + x + '-' + year;
}
window.onload = init;
<div id="mydate"></div>

вот скрипт, который делает именно то, что вы хотите

https://github.com/UziTech/js-date-format

var d = new Date("2010-8-10");
document.write(d.format("DD-MMM-YYYY"));

Если вы представляете себе короткий, читаемый человеком, функция-это легко регулируется, чтобы удовлетворить вас.

на метка параметр составляет миллисекунды с 1970 года-он возвращается new Date().getTime() и многие другие устройства...

хорошо, я передумал. Я включил дополнительную функцию для заполнения нуля. Проклятия!

 function zeroPad(aNumber) {
     return ("0"+aNumber).slice(-2);
 }
 function humanTime(timeStamp) {
    var M = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var D = new Date(timeStamp); // 23 Aug 2016 16:45:59 <-- Desired format.
    return D.getDate() + " " + M[D.getMonth()] + " " + D.getFullYear() + " " + D.getHours() + ":" + zeroPad(d.getMinutes()) + ":" + zeroPad(D.getSeconds());
 }

появилась новая библиотека,smarti.to.js, для локализованного форматирования номеров JavaScript, дат и дат JSON (Microsoft или ISO8601).

пример:

new Date('2015-1-1').to('dd.MM.yy')         // Outputs 01.01.2015
"2015-01-01T10:11:12.123Z".to('dd.MM.yy')   // Outputs 01.01.2015

есть также пользовательские короткие шаблоны, определенные в файле локализации (smarti.на.{культура}.js). Пример (smarti.to.et-EE.js):

new Date('2015-1-1').to('d')                // Outputs 1.01.2015

и способность мультиформатирования:

smarti.format('{0:n2} + {1:n2} = {2:n2}', 1, 2, 3)   // Output: 1,00 + 2,00 = 3,00