Дата странного форматирования Javascript
-
20-09-2019 - |
Вопрос
Мои настройки локали следующие :
Короткий Формат Даты :дд/ мм /гггг , Длинный Формат даты дд ММММ гггг
так почему же
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);