как удалить часть строки с помощью javascript [duplicate]

Вы можете использовать partial для выполнения этого:

>>> from collections import defaultdict
>>> from functools import partial
>>> pickle.loads(pickle.dumps(defaultdict(partial(defaultdict, int))))
defaultdict(<functools.partial object at 0x94dd16c>, {})
1394
задан Sunil Garg 4 April 2018 в 06:29
поделиться

29 ответов

Внимание: Ниже приведены более качественные ответы. Этот ответ был написан в 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 , и т.д ..

870
ответ дан Marko 16 August 2018 в 04:44
поделиться
  • 1
    Реально подумайте об использовании библиотеки, например Moment.js или Date.js. Эта проблема была решена много раз. – Benjamin Oakes 17 January 2012 в 21:43
  • 2
    Почему они не включают функцию в объект Date для этого? – Nayan 24 July 2014 в 16:04
  • 3
    Один из важных моментов заключается в том, что метод getMonth () возвращает индекс, основанный на 0, так что, например, январь вернется 0 февраля, вернется 1 и т. Д. ... – Marko 31 October 2014 в 15:54
  • 4
    moment.js 2.9.0 is 11.6k gzipped, этот пример - 211 bytes gzipped. – mrzmyr 30 March 2015 в 03:50
  • 5
    Следует отметить, что вы никогда не должны когда-либо использовать document.write (). Огромные проблемы безопасности и производительности. – Matt Jensen 9 September 2015 в 17:27

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

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

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: общий 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));

115
ответ дан Adrian Maire 16 August 2018 в 04:44
поделиться

Вот как я применил мои плагины 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;
}
11
ответ дан Amit Kumar Gupta 16 August 2018 в 04:44
поделиться
  • 1
    Это должно быть сделано в самом пакете npm – lbrahim 1 November 2016 в 12:09
  • 2
    Это хорошее предложение. Я создал его. Теперь я понял, что уже есть аналогичные пакеты. Таким образом, удаление моего пакета. – Amit Kumar Gupta 2 November 2016 в 07:53
  • 3
    На какой пакет вы ссылаетесь? – lbrahim 2 November 2016 в 09:11
  • 4
  • 5
    Измените строку для 'M' на format = format.replace("M(?!M)", (dt.getMonth()+1).toString()); и поставьте ее над строкой с помощью 'MMMM' – ntaso 22 February 2017 в 10:46

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

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

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

15
ответ дан Carrie Kendall 16 August 2018 в 04:44
поделиться

Вдохновленный чудесным решением регулярного выражения JD Smith , у меня внезапно возникла идея раскалывания головы:

var D = Date().toString().split(" ");
document.getElementById("demo").innerHTML = D[2] + "-" + D[1] + "-" + D[3];
3
ответ дан Community 16 August 2018 в 04:44
поделиться

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

var d = new Date();

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

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

6
ответ дан dexterb 16 August 2018 в 04:44
поделиться
  • 1
    или d.toLocaleDateString('en-US', options);, если вы находитесь в США. – BishopZ 27 January 2018 в 07:31

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

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

// formatted will be 'Jul 8, 2014'

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

157
ответ дан Dmitry Pavlov 16 August 2018 в 04:44
поделиться
  • 1
    Как я уже сказал, если jQueryUI уже используется в проекте, почему бы не использовать функцию форматирования даты datepicker? Эй, ребята, я не понимаю, почему я получаю отрицательное голосование по моему ответу? Пожалуйста, объясни. – Dmitry Pavlov 6 August 2014 в 16:20
  • 2
    Возможно, это связано с тем, что кто-то может включать пользовательский интерфейс jQuery только для функции формата даты, или это может быть потому, что datepicker является необязательной частью библиотеки, но, вероятно, это потому, что ненависть jQuery является модной. – sennett 21 August 2014 в 14:53
  • 3
    Я не думаю, что можно полностью избежать всех странных решений, которые кто-то мог сделать по ошибке или отсутствием смысла. – Dmitry Pavlov 21 August 2014 в 21:43
  • 4
    @sennett: Ненавижу jQuery модно? Так что ходьба вокруг с вашими штанами на полпути вниз по ногам, я полагаю ... это в значительной степени то, что пытается кодировать без jQuery, было похоже на большую часть истории JavaScript ... – Michael Scheper 22 September 2016 в 19:10
  • 5
    В любом случае, это полезный и вполне разумный ответ - опять же, 70% сайтов используют jQuery. Это не должно быть отменено из-за религиозных убеждений разработчиков. – Michael Scheper 30 October 2016 в 22:13

Полезным и гибким способом форматирования 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 - это конструктор для объектов, которые позволяют форматирование даты и времени с учетом языка.

Синтаксис

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

Параметры

locales

Необязательно. Строка с тегом языка 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.

timeZone

Часовой пояс для использования. Единственные значения, которые должны быть реализованы, - "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" и алгоритм «наилучшего соответствия», зависящий от реализации.

weekday

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

era

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

year

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

month

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

день

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

hour

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

минута

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

second

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

timeZoneName

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

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

Подробнее

9
ответ дан Iman Bahrampour 16 August 2018 в 04:44
поделиться

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

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

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

30
ответ дан JD Smith 16 August 2018 в 04:44
поделиться
  • 1
    Благодаря JD, аккуратное и компактное решение – Leo Moore 5 November 2015 в 17:53
  • 2
    Лучшее решение, никаких библиотек. Прямо в точку. – Sanchitos 18 November 2015 в 15:03
  • 3
    console.log(new Date().toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/,'$2-$1-$3')); – John 30 April 2016 в 11:44
var today = new Date();
var formattedToday = today.toLocaleDateString() + ' ' + today.toLocaleTimeString();
8
ответ дан Jeff K. 16 August 2018 в 04:44
поделиться

Вот какой код я только что написал для обработки форматирования даты для проекта, над которым я работаю. Он имитирует функциональность форматирования даты 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
 * 
 ************************************/
15
ответ дан jmiraglia 16 August 2018 в 04:44
поделиться

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

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

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

'24-Jan-2016'

(*) Согласно MDN , «современные браузеры» означают Chrome & nbsp; 24+, Firefox 29+, Internet & nbsp; Explorer & nbsp; 11, Edge & nbsp; 12+, Opera & nbsp; 15+ & amp; Safari ночной сборки .

80
ответ дан John Slegers 16 August 2018 в 04:44
поделиться

new Date().toLocaleDateString()

// "3/21/2018"

Дополнительная документация на developer.mozilla.org

12
ответ дан Kirk Strobeck 16 August 2018 в 04:44
поделиться
  • 1
    Следует отметить, что вы никогда не должны когда-либо использовать document.write (). Огромные проблемы безопасности и производительности – Eugene Fidelin 14 February 2018 в 16:39

Если вам нужно быстро форматировать дату, используя обычный 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
329
ответ дан lorem monkey 16 August 2018 в 04:44
поделиться
  • 1
    Обычный javascript, никаких библиотек - вот что мне нужно! Спасибо! – lorem monkey 11 August 2015 в 15:03
  • 2
    Префикс "0" .slice (-2) - действительно хороший способ гарантировать заполненные нули. Melikes – Nicholi 25 August 2015 в 23:23
  • 3
    Плюс один для быстрого и чистого javascript решения. – aero 8 March 2017 в 17:04
  • 4
    @Nicholi, отличное и творческое решение. Благодаря! – aero 8 March 2017 в 17:07
  • 5
    Лучший, который работал для меня отлично. Благодаря @sebastian – Code Spark 31 August 2017 в 09:15

Добавьте плагин jQuery UI к вашей странице:

function DateFormate(dateFormate, datetime) {
    return $.datepicker.formatDate(dateFormate, datetime);
};
303
ответ дан Peter Mortensen 16 August 2018 в 04:44
поделиться
  • 1
    Не добавляйте jQuery и jQuery UI только для форматирования даты! – Bennett McElwee 9 September 2015 в 03:05
  • 2
    если вы уже используете JQuery UI в своем проекте, это может быть хорошим подходом, но, похоже, вы можете показывать только дату, часы, минуты или секунды – A.Alqadomi 21 September 2015 в 09:36
  • 3
    Вы можете сделать new Date(date + " UTC"), чтобы обмануть часовой пояс, и вы можете исключить строку setMinutes. Мужчина, javascript грязный – Vajk Hermecz 22 October 2015 в 22:01
  • 4
    не совместим с Y10K :( – slang 10 November 2015 в 03:41
  • 5
    почему не простой jquery? $ .format.date (новая дата (), 'yyyy-MM-dd HH: mm: ss') – Alexander 3 February 2016 в 14:25
  • 6
    Совместимость с версией Y10K: var today = new Date().toISOString().slice(0,-14) :) – Alex Shaffer 25 February 2016 в 14:27
  • 7
    Или как new Date().toISOString().split('T')[0] – rofrol 2 June 2016 в 14:57
  • 8
    почему вы включаете jquery? – Ced 18 October 2016 в 17:23
  • 9
    Ох, жаль, что этого не нужно. Спасибо @Ced – Vijay Maheriya 21 October 2016 в 06:47
  • 10
    как указать дату, когда у меня есть момент. js? Я думаю, что это всегда занимает текущее время. – Dave Ranjan 1 December 2016 в 15:18
  • 11
    @DaveRanjan, я думаю, вам нужно конвертировать вашу пользовательскую дату. Поэтому используйте это: console.log (момент ('2016-08-10'). Format ('DD-MMM-YYYY')); – Vijay Maheriya 5 December 2016 в 06:59
  • 12
    Да, понял это позже. Благодаря :) – Dave Ranjan 6 December 2016 в 08:04
  • 13
    Отличный ответ, и для записи никто не будет использовать компьютеры в год 10 000. «1 и 0»? Дураки! Неудивительно, что они мертвы. & Quot; – Geek Stocks 8 February 2017 в 16:35
  • 14
    Я думаю, вам, вероятно, понадобится больше времени на свидание! – morhook 15 March 2017 в 13:29
  • 15
    Благодарю. Это очень полная и полная библиотека с небольшой площадью. – mitcheljh 15 January 2018 в 00:06

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)
11
ответ дан Prasad DLV 16 August 2018 в 04:44
поделиться
  • 1
    Простой и локализуемый, просто то, что нам нужно в эти сложные дни – Igor Parra 15 March 2015 в 17:02
  • 2
    Удивительно, что такая простая операция требует таких сложных решений. Спасибо тебе за это. – Tahreem Iqbal 1 November 2017 в 11:13

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

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

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

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

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

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

Для разных языков:

  1. «en-US»: для английского языка
  2. «hi-IN»: для хинди
  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

Ссылки:

803
ответ дан Pysis 16 August 2018 в 04:44
поделиться
  • 1
    ничего себе, действительно платит прокрутка вниз. ваш ответ сдувает тот, у которого более 300 голосов. отличная работа. – Ryan Loggerythm 7 April 2016 в 23:58
  • 2
    Спасибо за этот полезный ответ. Это должно быть принято. Отличная работа. – Sammy 26 November 2016 в 20:57
  • 3
    О мой господин, это правильный ответ. Я не могу поверить, насколько это было трудно для Google для этой информации. – M. Herold 20 July 2017 в 00:31
  • 4
    Был почти готов использовать moment.js для простого формата. К счастью, сделал дополнительный поиск в Google и нашел, что уже есть собственный API. Сохранена внешняя зависимость. Потрясающие! – Leon li 29 September 2017 в 03:19
  • 5
    Кажется, что этот ответ должен быть лучшим «текущим». ответ. Также используется опция "hour12: true" для использования 12-часовой и 24-часовой формат. Может быть, следует добавить в сводный список в ответ. – Doug Knudsen 17 December 2017 в 18:08

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

formatString: строка формата в том же формате, который ожидается функцией strftime() в C

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

Ссылки:

113
ответ дан Slava Fomin II 16 August 2018 в 04:44
поделиться
  • 1
    toLocaleFormat () работает только в Firefox. И IE, и Chrome не подходят для меня. – fitzgeraldsteele 11 June 2012 в 22:02
  • 2
    У Chrome есть метод .toLocaleString ('en'). Как кажется, новый браузер поддерживает этот developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… – apocalypz 9 July 2014 в 13:44
  • 3
    Прочитайте предупреждение здесь: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… – Carson Reinke 9 February 2015 в 21:09
  • 4
    это было бы лучшим решением, если бы каждый мог f * реализовать его. черт возьми, то есть / хром – santa 26 February 2016 в 15:10
  • 5
    @santa: Действительно. Возможно, была справедливая причина не следовать примеру Mozilla, но тот факт, что даже ES6 не имеет стандартной функции для этого, показывает, что он по-прежнему является языком хакера, а не языком разработчика. – Michael Scheper 22 September 2016 в 19:16

Используйте библиотеку date.format :

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/

526
ответ дан Stephan Muller 16 August 2018 в 04:44
поделиться
  • 1
    это может показаться более длинным решением, но сжатым и используемым на сайте, который использует даты с честным битом, было бы лучшим решением! – RobertPitt 25 August 2010 в 19:33
  • 2
    Это решение также доступно как пакет npm: npmjs.com/package/dateformat – David 21 October 2015 в 15:29
  • 3
    Есть 14 открытых проблем с вышеупомянутым плагином. Даже я нашел один :( – Amit Kumar Gupta 30 July 2016 в 16:16
  • 4
    Я получаю require is not defined – Hooli 12 November 2016 в 18:40
  • 5
    ОП попросил решение JS – Luke Pring 25 August 2017 в 12:23

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

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

var d = new Date("2010-8-10");
document.write(d.format("DD-MMM-YYYY"));
3
ответ дан Tony Brix 16 August 2018 в 04:44
поделиться

@ 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/ Дата / toLocaleDateString

29
ответ дан user956584 16 August 2018 в 04:44
поделиться
  • 1
    Вместо выполнения .replace () вы можете просто использовать «en-GB» в качестве языкового стандарта. :) – Roberto14 27 February 2015 в 13:29
  • 2
    Это действительно приятно, например. new Date().toLocaleDateString("en-EN", {month: "short", weekday: "short", day: "2-digit", year: "numeric"}) возвращает "Wed, Sep 06, 2017" – Pedi T. 6 September 2017 в 14:03

Использование шаблона строки 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);
22
ответ дан vdegenne 16 August 2018 в 04:44
поделиться

Существует новая библиотека 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.to. {culture} .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
303
ответ дан Peter Mortensen 16 August 2018 в 04:44
поделиться
  • 1
    Вы можете сделать new Date(date + " UTC"), чтобы обмануть часовой пояс, и вы можете исключить строку setMinutes. Мужчина, javascript грязный – Vajk Hermecz 22 October 2015 в 22:01
  • 2
    не совместим с Y10K :( – slang 10 November 2015 в 03:41
  • 3
    Совместимость с версией Y10K: var today = new Date().toISOString().slice(0,-14) :) – Alex Shaffer 25 February 2016 в 14:27
  • 4
    Или как new Date().toISOString().split('T')[0] – rofrol 2 June 2016 в 14:57
  • 5
    почему вы включаете jquery? – Ced 18 October 2016 в 17:23
  • 6
    Ох, жаль, что этого не нужно. Спасибо @Ced – Vijay Maheriya 21 October 2016 в 06:47
  • 7
    как указать дату, когда у меня есть момент. js? Я думаю, что это всегда занимает текущее время. – Dave Ranjan 1 December 2016 в 15:18
  • 8
    @DaveRanjan, я думаю, вам нужно конвертировать вашу пользовательскую дату. Поэтому используйте это: console.log (момент ('2016-08-10'). Format ('DD-MMM-YYYY')); – Vijay Maheriya 5 December 2016 в 06:59
  • 9
    Да, понял это позже. Благодаря :) – Dave Ranjan 6 December 2016 в 08:04
  • 10
    Отличный ответ, и для записи никто не будет использовать компьютеры в год 10 000. «1 и 0»? Дураки! Неудивительно, что они мертвы. & Quot; – Geek Stocks 8 February 2017 в 16:35
  • 11
    Я думаю, вам, вероятно, понадобится больше времени на свидание! – morhook 15 March 2017 в 13:29
  • 12
    Благодарю. Это очень полная и полная библиотека с небольшой площадью. – mitcheljh 15 January 2018 в 00:06
4
ответ дан Hinrich 6 September 2018 в 03:37
поделиться
305
ответ дан Peter Mortensen 6 September 2018 в 03:37
поделиться
305
ответ дан Peter Mortensen 6 September 2018 в 03:37
поделиться
3
ответ дан Dave 29 October 2018 в 10:03
поделиться
316
ответ дан Peter Mortensen 29 October 2018 в 10:03
поделиться
316
ответ дан Peter Mortensen 29 October 2018 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: