Сообщение 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.
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 но это не важно в данном случае).
Ну вот какие проблемы с этим:
?
То как ты кодируешь дату или время при JSON передаче абсолютно не релевантно. Это функция твоего контроллера который стоит между моделью данных и view.
JSON не специфицирует никак даты — т.е. это сугубо твой бизнес. Приведи свои форматы дат к Date (UTC) при отправке и получении JSON от сервера и проблемы нет.
И в общем случае сервер обязан хранить даты событий в UTC.
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.