В приведенном ниже фрагменте я создаю JsonStore (тип записи которого представляет собой одно поле даты), добавляю в него новую запись и сохраняю ее. При сохранении часовой пояс не включается в сериализованное значение даты, даже если он включен в фактический объект записи (как показано Firebug). Ext, похоже, конвертирует дату в часовой пояс браузера, но затем удаляет часовой пояс при отправке запроса на сервер. Я использую формат даты и времени ISO 8601 ('c'
), который, если я правильно читаю документы Ext, должен включать часовой пояс.
Даже если он конвертируется в часовой пояс браузера, для меня это не будет проблемой, если он включает этот часовой пояс при сохранении записи. В его нынешнем виде сервер должен быть написан таким образом, чтобы он анализировал входящие даты в часовом поясе браузера, но отправлял их клиенту в возможно другом часовом поясе, что выглядит глупо. Какие-либо предложения? Я прочитал несколько, казалось бы, связанных вопросов на форумах Ext, но, похоже, они имели дело с немного другими проблемами.
var myDataStore = new Ext.data.JsonStore({
url: '/api/echo',
writer: new Ext.data.JsonWriter({
encode: false,
writeAllFields: true
}),
root: 'records',
fields: [
{name: 'myDate', type: 'date', dateFormat: 'c'}
],
autoSave: false,
autoLoad: false
});
myDataStore.add(new myDataStore.recordType({myDate: Date.parseDate('2010-11-08T11:00:00.000-0000','c')}));
myDataStore.save();
Сериализованные данные (без часового пояса):
{"records":{"myDate":"2010-11-08T06:00:00"}}