Манипулирование датами в Javascript без объекта Date
-
20-09-2019 - |
Вопрос
Похоже, я не могу использовать объект javascript Date, поскольку он по умолчанию использует US dates при инициализации с помощью datestring.Невозможно передать какую-либо информацию о культуре объекту date
Тоесть.Независимо от того, каковы языковые настройки клиентов
var d = new Date("08/10/2009") всегда будет создавать объект date, представляющий 10 августа 2009 года, а не 8 октября 2009 года, если локалем клиента была Великобритания.
Итак, учитывая, что мое требование состоит в том, чтобы иметь возможность легко добавлять / вычитать дни / месяцы / годы, есть ли умный способ сделать это легко без объекта Date
Все, что мне нужно сделать, это добавить день к дате (или строковое представление даты).итак, если мой код обнаруживает, что настройки локали находятся в США, когда он видит строку типа "10/08/2009", он увеличивает ее до "10/09/2009", но если бы он обнаружил, что это было в Великобритании, он бы узнал, что это британское строковое представление даты, и увеличил его до "09/10/2009"
Решение
Для манипулирования датами и локализации на JavaScript я всегда рекомендую ДатаJS библиотека.
Эта библиотека абстрагирует использование объектов Date, имеет очень хорошие возможности локализации, мощный анализ и форматирование даты, а также имеет очень хороший гибкий API.
Другие советы
Если вы знать вы получаете входные данные в формате дд / мм / гггг, вы можете легко ввести правильную дату.
function britDay(D){
D= D.match(/\d+/g);
return new Date(+D[2], D[1]-1, +D[0]);
}
toLocaleDateString вернет дату в формате, ожидаемом пользователем.
Оптимистично полагаться на пользовательский ввод, который подчиняется определенным правилам форматирования. именно поэтому большинство сайтов используют отдельные, помеченные входные данные или поля выбора для месяца, даты и года.
Вы, наверное, знаете, что к дате легко прибавить один день, достаточно прибавить к дате 86 400 * 1000 миллисекунд.Похоже, проблема в отображении в вашем регионе;Date.toLocaleString() не подходит вам?
dojo.date.locale.parse сможет анализировать отформатированную строку в соответствии с выбранной вами локалью.У него есть таблица культурных данных, основанная на unicode.org/cldr.Видеть Эта статья Чтобы получить больше информации.