Форматирование даты и времени с помощью интерфейса 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;
}
У вас есть опечатка в вашем коде..
Вместо seconds: '2-digit'
так должно быть second: '2-digit'
Обновил свою скрипку https://jsfiddle.net/gxze230b/3/
Редактировать: Подумав некоторое время, подумайте, что лучше использовать ответы, приведенные здесь.
Где я могу найти документацию по форматированию даты в JavaScript?
Кажется, пока не все комбинации поддерживаются.