Невозможно быть уверенным, что вернется toLocaleString
;Вы, конечно, не могли гарантировать, что EDT
будет отображаться на каждой машине, на которой он запущен, не говоря уже о каких-либо указаниях на часовой пояс.
Из сети разработчиков Mozilla:
toLocaleString
метод опирается на базовую операционную систему при форматировании дат.Он преобразует дату в строку, используя соглашение о форматировании операционной системы, в которой выполняется скрипт.Например, в Соединенных Штатах месяц появляется перед датой (15.04.98), тогда как в Германии дата появляется перед месяцем (15.04.98).Если операционная система не соответствует требованиям 2000 года и не использует полный год за годы до 1900 года или более 2000 года, toLocaleString возвращает строку, которая не соответствует требованиям 2000 года.toLocaleString ведет себя аналогично toString при преобразовании года, который операционная система неправильно форматирует.
Один возможный обходной путь будет заключаться в построении пользовательской строки даты с использованием toLocaleDateString
и toLocaleTimeString
.
// Something to this effect:
var d = new Date();
console.log(d.toLocaleDateString() + " " + d.toLocaleTimeString());
Обычно это не включает часовой пояс в вывод, но даже это не идеально, как вы не знаетекаким будет точный формат вывода.
Таким образом, наилучшим решением будет использование пользовательской функции форматирования даты:
// Add leading-zeros to numbers less than 10[000...]
function padZ(num, n) {
n = n || 1; // Default assume 10^1
return num < Math.pow(10, n) ? "0" + num : num;
}
function formattedDate(d) {
var day = d.getDate();
var month = d.getMonth() + 1; // Note the `+ 1` -- months start at zero.
var year = d.getFullYear();
var hour = d.getHours();
var min = d.getMinutes();
var sec = d.getSeconds();
return month+"/"+day+"/"+year+" "+hour+":"+padZ(min)+":"+padZ(sec);
}
Для более подробного изучения доступныхDate
методы, проверьте Date
на MDN.