Информация об изменениях

Сообщение Re: Локализация дат и в распределенных приложениях от 25.03.2015 0:14

Изменено 25.03.2015 0:28 c-smile

Здравствуйте, baranovda, Вы писали:

B>Думаю, Sciter тут представлять не надо и его все знают.


B>Есть в нем закавыка с контролом ввода даты.

B>В форме ввода я выбираю дату при помощи выпадающего календаря, далее эта дата заворачивается в JSON и отправляется на веб-сервер.
B>На веб-сервере я обнаруживаю, что получаю не ту дату, которую вводил, а UTC, то есть минус три часа поправки на мой часовой пояс, или иными словами не 25.03.2015, а 24.03.2015 21:00.
B>То есть контрол сам поправил введенную мной дату и привел ее к UTC.

B>Академически все правильно: Андрей считает, что в распределенных приложениях, которые могут работать с сервером откуда угодно, дату/время нужно приводить к UTC и я в этом с ним согласен.


B>Должен ли такое преобразование самостоятельно выполнять контрол, работающий в Presentation Layer?

B>Или же это ответственность Buisness Layer-а (контроллера, презентера или чего там еще)?

Я честно говоря не понимаю твою проблему...
Мне кажется ты как-то неправильно это все интерпретируешь.

Дано:
1. Sciter у которого есть тип Date который хранит UTC дату и время. Как и в JavaScript.
2. Есть <input|date> и <input|time> у которых value тоже Date.
3. Эти inputs показывают дату (UTC) с учетом текущей timezone пользователя (есть возможность задать любую timezone но это не важно в данном случае).

То как ты кодируешь дату или время при JSON передаче абсолютно не релевантно. Это функция твоего контроллера который стоит между моделью данных и view.
JSON не специфицирует никак даты — т.е. это сугубо твой бизнес. Приведи свои форматы дат к Date (UTC) при отправке и получении JSON от сервера и проблемы нет.

И в общем случае сервер обязан хранить даты событий в UTC.
Re: Локализация дат и в распределенных приложениях
Здравствуйте, baranovda, Вы писали:

B>Думаю, Sciter тут представлять не надо и его все знают.


B>Есть в нем закавыка с контролом ввода даты.

B>В форме ввода я выбираю дату при помощи выпадающего календаря, далее эта дата заворачивается в JSON и отправляется на веб-сервер.
B>На веб-сервере я обнаруживаю, что получаю не ту дату, которую вводил, а UTC, то есть минус три часа поправки на мой часовой пояс, или иными словами не 25.03.2015, а 24.03.2015 21:00.
B>То есть контрол сам поправил введенную мной дату и привел ее к UTC.

B>Академически все правильно: Андрей считает, что в распределенных приложениях, которые могут работать с сервером откуда угодно, дату/время нужно приводить к UTC и я в этом с ним согласен.


B>Должен ли такое преобразование самостоятельно выполнять контрол, работающий в Presentation Layer?

B>Или же это ответственность Buisness Layer-а (контроллера, презентера или чего там еще)?

Я честно говоря не понимаю твою проблему...
Мне кажется ты как-то неправильно это все интерпретируешь.

Дано:
1. Sciter у которого есть тип Date который хранит UTC дату и время. Как и в JavaScript.
2. Есть <input|date> и <input|time> у которых value тоже Date.
3. Эти inputs показывают дату (UTC) с учетом текущей timezone пользователя (есть возможность задать любую timezone но это не важно в данном случае).

Ну вот какие проблемы с этим:
var birthday = $(input[type=date]);
// Values that user sees:
// birthday.value.day 
// birthday.value.month 
// birthday.value.year
// Also available 
// birthday.value.UTCday 
// birthday.value.UTCmonth 
// birthday.value.UTCyear

?

То как ты кодируешь дату или время при JSON передаче абсолютно не релевантно. Это функция твоего контроллера который стоит между моделью данных и view.
JSON не специфицирует никак даты — т.е. это сугубо твой бизнес. Приведи свои форматы дат к Date (UTC) при отправке и получении JSON от сервера и проблемы нет.

И в общем случае сервер обязан хранить даты событий в UTC.