Манипулирование датами в Javascript без объекта Date - PullRequest
1 голос
/ 08 октября 2009

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

т.е. Неважно, какие настройки языка клиента

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

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

Все, что мне нужно сделать, это добавить день к дате (или строковое представление даты). поэтому, если мой код обнаруживает, что локали урегулирования находятся в США, когда он видит строку типа «10/08/2009», он поднимает ее до «10/09/2009», но если он обнаружил, что это было в Великобритании, он будет знаю, что это строковое представление в Великобритании, и разбил его до "09/10/2009"

Ответы [ 4 ]

3 голосов
/ 08 октября 2009

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

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

1 голос
/ 08 октября 2009

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

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

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

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

0 голосов
/ 11 декабря 2009

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

0 голосов
/ 08 октября 2009

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

...