На клиенте в браузере получаю дату:
var day = Date(list.CreationDate);
list.CreationDate
- это переменная с сервера, имеющая там тип DateTime
и приходящая на клиент ajax
запросом.
Если в консоли браузера набрать day, то получаем
"Sat Jan 16 2016 18:24:17 GMT+0300 (Russia TZ 2 Standard Time)"
Т.е. вроде как day содержит дату
если в консоли набрать day.getDay()
, то получаем:
TypeError: day.getDay is not a function
Ожидалось, что получу число дня.
Что делаю не так?
Это нужно для того, чтобы распарсить дату и преобразовать её в строку вида xx.xx.xxxx
(день.месяц.год)
Используйте getDate() для получения дня месяца.
// a = new Date(list.CreationDate)
a = new Date("Sat Jan 16 2016 18:24:17 GMT+0300 (Russia TZ 2 Standard Time)");
console.log(a.getDate() +'/'+ (a.getMonth() + 1) +'/'+ a.getFullYear());
Результат:
16/1/2016
Это известная проблема с сериализацией даты. Когда дата сериализуется стандартными средствами получается строка следующего вида
/Date(число)/
где число - это unixtimestamp сериализованной даты. Если это число передать в конструктор Date, то создастся дата соответствующая той, которую сериализовали.
Решений может быть несколько:
Выдрать число и передать в конструктор, например с помощь регулярных выражений
new Date(parseInt('/Date(1452866810857)/'.match(/\d+/)[0],10))
//Fri Jan 15 2016 17:06:50 GMT+0300 (RTZ 2 (зима))
для случая из вопроса
var day = new Date(parseInt(list.CreationDate.match(/\d+/)[0],10));
Отправлять сразу данный timestamp - это количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года. Тогда код упростится до
var day = new Date(list.CreationDate);
Либо отправлять дату переведенную в ISO формат, в этом случае можно использовать не только конструктор, но и метод parse
По поводу вашего варианта:
В справке по функции Date
Обратите внимание: объекты Date могут быть созданы только путём вызова функции Date в качестве конструктора: обычный вызов функции (то есть, без использования оператора new) вернёт строку вместо объекта Date; в отличие от других объектных типов JavaScript, объекты Date не имеют литерального синтаксиса.
Таким образом, выполняя
var day = Date(list.CreationDate);
получаем в day
- строку, а не дату.
console.log(list.CreationDate) - показало /Date(1452866810857)/
Если так, то, сам list.CreationDate
– объект Date. Попробуйте:
var dateString =
('0' + list.CreationDate.getDate()).slice(-2) + '.'
+ ('0' + (list.CreationDate.getMonth()+1)).slice(-2) + '.'
+ list.CreationDate.getFullYear(); // 15.01.2016
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В componentDidUpdate делаю второй поход за данными, что бы после добавления новой задачи( компонент AddTaskInput), изменения статуса или удаления (компонент...
Предположим имеется 1 изображение машиныНеобходимо создать два объекта Image с этой машиной и двигать эти два изображения асинхронно
Изучая backend, столкнулся с такой проблемой недопонимания: есть сайт, сервер Nodejs (в принципе, какой угодно, но меня интересует именно Nodejs) и зашел...
Никак не получается добиться желаемого результата со slider-ом жуквэриЕсть шаг в 5, хотелось бы получить labels в виде 1,5,10,15,20 и т