Вопрос

Похоже, я не могу использовать объект 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.Видеть Эта статья Чтобы получить больше информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top