JavaScript date () Объект возвращает NaN с getYear (и другими) - PullRequest
4 голосов
/ 30 сентября 2011

В настоящее время у меня возникают проблемы с преобразованием строкового объекта dateTime в JavaScript

Я предполагаю, что это потому, что моя строка не может правильно использоваться в new Date(), но я не уверен, что это проблема.

Мой вклад: "2011-09-29 14:58:12"

Мой код:

var date = "2011-09-29 14:58:12";
var added = new Date(date);
var year = added.getYear();

Однако, мой year var содержит NaN. То же самое с getDay () или getMonth (). В чем проблема?

ps: я получаю дату в ее формате из базы данных SQLite. И я использую Titanium Mobile, поэтому единственное, что задействовано, - это javascript и SQLite

Ответы [ 2 ]

9 голосов
/ 30 сентября 2011

Вы полагаетесь на Date конструктор , анализирующий неподдерживаемый формат.До недавнего времени конструктор Date поддерживал стандартный формат no .Начиная с ECMAScript5, он существует (YYYY-MM-DDTHH:MM:SS, обратите внимание на T, а не на пробел), но он был задан только в течение двух лет и, естественно, не работает в старых браузерах.в настоящее время лучше всего разбирать его самостоятельно (вы можете найти код в этом вопросе и его ответах ) или использовать что-то вроде DateJS , чтобы проанализировать его для вас (и предоставить многодругих полезных данных о дате / времени).

0 голосов
/ 30 сентября 2011

Конструктор Date не будет анализировать строку для вас. Вам нужно будет использовать Date.parse, чтобы сделать это. Интересно, что Date.parse на самом деле не возвращает Date. Вместо этого он возвращает метку времени Unix. Затем вы можете передать метку времени Unix в конструктор Date, чтобы получить то, что ищете.

var d = new Date(Date.parse("2011-09-29 14:58:12"));
...