Я искал способ получить название месяца и название дня недели из Date
объекта в javascript и наткнулся на этот пост: Получить название месяца от даты , куда указал Дэвид Стори к методу date.toLocaleString()
. Сначала это выглядело так, как будто все работает отлично. Я мог бы сделать что-то вроде этого, чтобы получить название месяца без определения массива:
var someDate = new Date(2018, 8, 28);
var locale = "en-us"
var month = someDate.toLocaleString(locale, { month: "short" }).toLowerCase();
, что даст мне результат aug
в переменной месяца. Но я заметил проблему с этим. В конечном итоге я поместил значения месяца и дня недели в скрытые поля формы, которые будут опубликованы вместе с формой. Когда форма была опубликована, я не получил ожидаемые значения. Например, глядя на объявленное значение для поля месяца, вместо aug
я получал %FDaug
, и то же самое было верно для значения дня недели. Но если я проверил значения в отладчике перед публикацией, они выглядели правильно. Я не знаю, откуда взялся %FD
, но это значит, что я не могу использовать этот метод, если нет способа обрезать его первым. Я посмотрел документацию по функции здесь , но не увидел там ничего, связанного с этой проблемой.
А пока я вернулся к использованию массива названий месяцев и дней и выполнил их поиск. Кто-нибудь знает, почему этот дополнительный символ ascii вводится при использовании Date.toLocaleString
?
Вот скриншоты из отладчика браузера, я пробовал это в IE, Edge и Chrome. С Chrome все в порядке, но IE и Edge имеют такое поведение. Я не пробовал Firefox
значения перед публикацией ...
![debugger variables are ok](https://i.stack.imgur.com/4w1Qx.png)
объявленные значения ...
![posted values are wrong](https://i.stack.imgur.com/tKWs3.png)