Вопрос

Мои настройки локали следующие :

Короткий Формат Даты :дд/ мм /гггг , Длинный Формат даты дд ММММ гггг

так почему же

var d = new Date("8/10/2009")
alert(d.toLocaleDateString()); 

вырвало 10 августа 2009

или

var d = new Date("15/10/2009");

вырвало 10 марта 2010

Это было полезно?

Решение

Откуда система берет дату 10 августа, должно быть очевидно, даже если вы пока не понимаете, почему.Но менее просто понять, как он получает "10th March 2010" из "15/10/2009".Так что на случай, если вы это пропустили:

Предположим на мгновение, что объект Date уже решил, что он использует формат "M / d / y", поэтому первая часть (15) - это месяц.Как бы он с этим справился?Что происходит, так это то, что он начинается с года и строит дату "1/1/2009".Затем он переходит на 15-й месяц, чтобы дать вам март 2010 года.Добавьте 10 дней, и все готово.

Что касается "почему" этого, обратите внимание, что вам пришлось позвонить toLocaleDateString() чтобы заставить его выводиться в вашем конкретном языковом формате.Но твой new Date() нигде не содержится подобного упоминания о локали.Так что это просто использование своей инвариантной встроенной культуры.

Другие советы

Попробуйте вместо этого вот это.

var myDate=new Date();
myDate.setFullYear(2010,0,14);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top