Вопрос: Как отформатировать дату JavaScript


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


1201


источник


Ответы:


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


830



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

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

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

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

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

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

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

  1. "EN-US": Для английского
  2. "Привет-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

Рекомендации:


666



Использовать библиотека 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/


518



Если вам нужно быстро форматировать дату, используя обычный 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

314



Ну, я хотел бы преобразовать сегодняшнюю дату в 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);
}

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


292



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

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

// formatted will be 'Jul 8, 2014'

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


157



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

FormatString: Строка формата в том же формате, strftime()функции в C.

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

Рекомендации:


113



Custom formatting function:

For fixed formats, a simple function make the job. The following example generates the international format 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

The OP format may be generated like:

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

Note: It is, however, usually not a good idea to extend the JavaScript standard libraries (e.g. by adding this function to the prototype of Date).

A more advanced function could generate configurable output based on a format parameter.

If to write a formatting function is too long, there are plenty of libraries around which does it. Some other answers already enumerate them. But increasing dependencies also has it counter-part.

Standard ECMAScript formatting functions:

Since more recent versions of ECMAScript, the Date class has some specific formatting functions:

toDateString: Implementation dependent, show only the date.

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: Show ISO 8601 date and time.

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 for 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: Implementation dependent, a date in locale format.

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

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

toLocaleString: Implementation dependent, a date&time in locale format.

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: Implementation dependent, a time in locale format.

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 for Date.

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

Note: it is possible to generate custom output out of those formatting >

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

Examples snippets:

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


99