2013-08-17 2 views
1

У нас есть приложение asp.net mvc, которое размещено на окнах azure в качестве облачного сервиса. У нас возникает проблема при сохранении даты.windows azure добавляет +10 часов к полю времени

Сайт использует элементы управления telerik.

В основном у нас есть поле start datetime и поле datetime end, которое мы вводим во всплывающем диалоговом окне. Если я войду в это поле, например, 31/08/2013 06:00 утра для начала и 31/08/2013 07:00 утра, а затем нажмите сохранить его в сетке telerik, но он добавил 10 часов к каждой области, я предполагаю, что Брисбен, Австралия, где я нахожусь + 10 часов.

Затем я сохраняю данные, и он хранится в базе данных как время, которое имеет + 10 часов. Вводимое время не относится к часовому поясу, в котором мы хотим, чтобы любое время было введено, независимо от того, где пользователь и т. Д.

ответ

2

Windows Azure datacenters run in UTC time zone. Вот почему (и, как вы догадались), вы видите разницу в 10 часов. Одно из возможных (и рекомендованных) решений может заключаться в том, чтобы всегда использовать время UTC в вашем приложении. Таким образом, независимо от того, откуда обращается ваше приложение, вы получаете согласованное поведение в своем приложении в отношении даты и времени. В этом случае, когда пользователь вводит какую-либо дату/время, вы предполагаете, что находитесь в формате UTC.

Еще одна вещь, которую вы можете сделать - это передать часовой пояс пользователя на логику на стороне сервера и преобразовать дату/время, предоставленные пользователем в часовой пояс UTC. Так, если пользователь из Австралии предоставляет дату и время начала 31/08/2013 06:00 AM, вы также передаете пользователю часового пояса и на стороне сервера, вы будете конвертировать эту дату/время в UTC на основании предоставленной пользователем даты/время и часовой пояс пользователя.

+0

Привет, Гаурав, Большое спасибо за ваш ответ. Это, как я понял, и да, одним из решений было бы рассмотреть часовой пояс пользователей и код для смещения. Однако в этой ситуации время против объекта (расположение хранилища) является противным пользователю. Единственный способ, который я вижу, это то, что нам нужно будет использовать строки для ввода и отображения данных и отрегулировать настройку времени в бизнес-логике от ui. В Австралии существует несколько часовых поясов, и привязка каждого магазина к часовому поясу слишком сложна для того, что необходимо. Я считаю, что вы должны установить время как время. – user2691365

+0

Одна вещь, о которой вам нужно помнить, - это когда вы создаете объект даты/времени из этой строки, потому что снова дата/время будет преобразовано в UTC на сервере. Одна вещь, которую вы можете сделать, - это построить только дату, сначала на основе строки, а затем добавить время отдельно к дате, которую вы только что создали. –

Смежные вопросы