Как создать объект даты JavaScript из магазина JSON? - PullRequest
2 голосов
/ 14 сентября 2011

У меня есть следующий ответ JSON, созданный Doctrine 2 как объект datetime на стороне сервера и закодированный как JSON методом Zend_Json :: encode ($ stores) платформы zend:

{
"birthdate":
{"date":"2011-08-19 00:00:00","timezone_type":3,"timezone":"Europe\/Berlin"}
}

Мне нужносоздать новый Date (), используя этот JSON для моей сетки данных Extjs, но я не могу понять, как манипулировать ответом JSON.Предполагая, что у меня есть хранилище JSON и я могу получить доступ к объекту рождения, новая Дата (birthdate.date) выдаст «Date {Invalid Date}». New Date («date»: «2011-08-19 00:00:00»)выдает ту же ошибку, но новая Дата ("дата": "2011-08-19") работает нормально.Пожалуйста, посоветуйте мне, как создать объект даты из моего магазина JSON.

Ответы [ 4 ]

2 голосов
/ 14 сентября 2011

Вы можете проанализировать дату, используя следующий код

Date.parseDate("2011-08-19 00:00:00", "Y-m-d h:i:s");

API Doc

В соответствии с ExtJS 4.0 метод изменяется на parse

Ext.Date.parse("2011-08-19 00:00:00", "Y-m-d h:i:s")

API Doc

1 голос
/ 14 сентября 2011

Эта строка не может быть понятна конструктору Date или Date.parse. Однако он может понимать часть «ГГ-ММ-ДД», поэтому, если этого достаточно, вы можете сделать следующее:

var data = {
    "birthdate": {
        "date": "2011-08-19 00:00:00",
        "timezone_type": 3,
        "timezone":"Europe\/Berlin"
    }
};
// just parse the 'YY-MM-DD' part
new Date(data.birthdate.date.split(' ')[0]);

<ч /> Изменить: когда я говорю, что формат не может быть проанализирован, я имею в виду кросс-браузерным способом. Например, последний Chrome прекрасно понимает строку, а последний FF - нет. Часть 'YY-MM-DD' должна быть достаточно кросс-браузерной (хотя обязательно проверяйте и проверяйте это).

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

Вы должны проанализировать вашу строку, чтобы получить объект Date ( см. Здесь ):

var yourDate = Date.parse("2011-08-19 00:00:00");
0 голосов
/ 14 сентября 2011

Вы пробовали Date.parse?https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse

Если он не анализируется, вам придется переформатировать строковый формат.

...