Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Управление датами в Javascript без объекта Date

Автор вопроса: user48408Ответов: 4

Похоже, я не могу использовать объект Date javascript, поскольку он по умолчанию использует даты США по умолчанию, когда вы инициализируете строку даты. Невозможно передать какую-либо информацию о культуре объекту даты.

т.е. Независимо от того, какие настройки локали клиента

var d = new Date("10.08.2009") всегда будет создавать объект даты, представляющий 10 августа 2009 г., а не 8 октября 2009 г., если языковым стандартом клиента была Великобритания.

Итак, учитывая, что мое требование состоит в том, чтобы иметь возможность легко добавлять/вычитать дни/месяцы/годы, есть ли умный способ сделать это легко без объекта Date

Все, что мне нужно сделать, это добавить день к дате (или строковое представление даты). поэтому, если мой код обнаружит, что настройки локали находятся в США, когда он увидит строку типа "08.10.2009", он изменит ее до "09.10.2009", но если бы он обнаружил, что это было в Великобритании, он бы знаю, что это строковое представление даты в Великобритании, и взломал его до "10.09.2009".

javascriptlocalizationdate-format

Ответы

Ответ 1 · рейтинг 3 · Christian C. Salvadó

Для работы с датами и локализации в JavaScript я всегда рекомендую библиотеку DateJS.

Эта библиотека абстрагируется от использования объектов Date, имеет очень хорошие параметры локализации, мощный анализ и форматирование даты, а также имеет очень удобный API.

Ответ 2 · рейтинг 1 · kennebec

Если вы знаете, что получаете ввод в формате дд/мм/гггг, вы можете легко установить правильную дату.

function britDay(D){
 D= D.match(/\d+/g);
 return new Date(+D[2], D[1]-1, +D[0]);
}

toLocaleDateString вернет дату в формате, ожидаемом пользователем.

Опора на пользовательский ввод, который подчиняется определенным правилам форматирования, оптимистична, поэтому большинство сайтов используют отдельные, помеченные поля ввода или выбирают поля для месяца, даты и года.

Ответ 3 · Berry

Вы, наверное, знаете, что к дате легко добавить один день, просто добавьте к дате 86 400 * 1000 миллисекунд. Похоже, проблема заключается в отображении в вашем регионе; Date.toLocaleString() не подходит вам?

Ответ 4 · peller

dojo.date.locale.parse сможет анализировать отформатированную строку в соответствии с выбранной вами локалью. У него есть таблица культурных данных, основанная на unicode.org/cldr. Дополнительную информацию см. в этой статье.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы