Форматирование даты и времени с помощью интерфейса ECMAScript Internationalization

Мне нужно иметь дату / время в формате javascript:

16 февраля 2015 г. 06:31:00

Я собирался использовать toLocaleTimeString с некоторыми опциями, но код, который я попробовал ниже, похоже, не работает в Chrome.

function getFormattedDateTime(dateTimeToFormat) {
dateTimeToFormat = new Date(dateTimeToFormat);
var monthOptions = {
    month: 'long', year: 'numeric', day: 'numeric',
    hour: '2-digit', minute: '2-digit', second: '2-digit'
};

return dateTimeToFormat.toLocaleTimeString('en-us', monthOptions);
}

Выход из вышеприведенного кода: 16 февраля 2015 г., 6:31.

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

Вот JSFiddle, чтобы сэкономить время: https://jsfiddle.net/gxze230b/

После исправления опечатки выводится строка: 16 февраля 2015 г., 6:31:00

2 ответа

Решение

Благодаря руководству @Amitd мне удалось сформулировать метод, который будет давать ожидаемый результат 16 февраля 2015 г. 06:31:00

function getFormattedDateTime(dateTimeToFormat) {dateTimeToFormat = new Date(dateTimeToFormat);

var zeroPad = function (val) {
    return (val <= 9 ? '0' + val : '' + val);
};

var month = dateTimeToFormat.toLocaleString('en-us', {month: "long"});
var day = dateTimeToFormat.getDate();
var year = dateTimeToFormat.getFullYear();

var hour = ((dateTimeToFormat.getHours() + 11) % 12 + 1);
var minutes = dateTimeToFormat.getMinutes();
var seconds = dateTimeToFormat.getSeconds();
var suffix = (hour <= 12) ? 'AM' : 'PM';

return month + ' ' + zeroPad(day) + ', ' + year + ' ' + zeroPad(hour) + ':' + zeroPad(minutes) + ':' + zeroPad(seconds) + ' ' + suffix;
}

JSFiddle: https://jsfiddle.net/puddinman13/L0128fL9/

У вас есть опечатка в вашем коде..

Вместо seconds: '2-digit' так должно быть second: '2-digit'

Обновил свою скрипку https://jsfiddle.net/gxze230b/3/

Редактировать: Подумав некоторое время, подумайте, что лучше использовать ответы, приведенные здесь.
Где я могу найти документацию по форматированию даты в JavaScript?

Кажется, пока не все комбинации поддерживаются.

Другие вопросы по тегам