Чтобы отформатировать дату в месяц/день час: минута с Date.js вы назвали бы ToString с форматом «MM/DD HH: мм», чтобы получить две цифры для всех значений, например:
console.log(new Date().toString('MM/dd HH:mm'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>
Попытка определить формат, который пользователь ожидает увидеть весьма проблематичен, будь он упоминается как «культура», «локал» или просто «предпочтение». Javascript не имеет доступа к системным настройкам, и браузер не раскрывает их. Вы можете попытаться угадать на основе вывода Date.prototype.toLocaleString, но это полностью зависит от реализации и не обязательно соответствует предпочтениям пользователя.
Один общий подход заключается в использовании однозначного формата, поэтому предпочтения пользователя не имеют значения, например.
console.log(new Date().toString('dd-MMM HH:mm'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>
Другой подход заключается в однозначную формат по умолчанию, а затем позволяет пользователю выбрать один из нескольких поддерживаемых форматов и сохранять предпочтения.
Существует также встроенный Date.prototype.toLocaleString, который довольно ненадежный, но некоторые браузеры поддерживают опционный ECMA-402 Intl formatting options. Это довольно обычное явление, как форматирование, поэтому на самом деле нельзя рекомендовать, когда есть библиотеки, которые делают работу намного лучше, например.
var options = {
month: 'short',
day : '2-digit',
hour : '2-digit',
minute:'2-digit'
};
// Browser dependent, something like en-us: Jan 21, 8:39 AM
console.log('en-us: ' + new Date().toLocaleString('en-us',options))
// Browser dependent, something like en-gb: 21 Jan, 08:39
console.log('en-gb: ' + new Date().toLocaleString('en-gb',options))
Еще один подход, чтобы написать свой парсер и форматчик, который делает именно то, что вам нужно. Если вам нужно поддерживать только один или два формата, это довольно прямолинейно, например.
// input format yyyy/mm/dd hh:mm:ss
function parseDateString(ds) {
var d = ds.split(/\D+/);
return new Date(d[0], --d[1], d[2], d[3], d[4], d[5]);
}
// Return date string as mm/dd hh:mm
function formatDate(d) {
function z(n) {
return (n < 10 ? '0' : '') + n
}
return z(d.getMonth() + 1) + '/' + z(d.getDate()) +
' ' + z(d.getHours()) + ':' + z(d.getMinutes());
}
console.log(formatDate(parseDateString('2014/09/20 20:00:00'))); // 09/20 20:00
Таким образом, вы можете заменить целую библиотеку менее десятка строк кода. :-)
Javascript не предоставляет доступа к языковым настройкам. Лучшие библиотеки могут делать, это угадать часовой пояс от смещения часовой пояс в середине и конце года. Существует встроенный [* Date.prototype.toLocaleString *] (http://ecma-international.org/ecma-262/5.1/#sec-15.9.5.5), но выход полностью зависит от реализации и сильно отличается от хоста к хосту. Вероятно, лучшее, что вы можете сделать, это попросить пользователей определить формат, который им нравится, и запомнить выбор для последующего использования. – RobG