2010-10-04 2 views
1

У меня есть большая проблема, и я не знаю, как решить этоПроблема с DateTime.Now на сервере

Я создал веб-приложение и разместить его в сервере США, и пользователи, имеющие доступ к этому веб-приложению из Египта

проблема, что я использую метод DateTime.Now внутри приложения, и этот метод вернуть время США сервера не время машины, которые используют его в Египте

Как я могу решить эту проблему ? пожалуйста, помогите мне, как только вы можете

Заранее спасибо

ответ

5

Ну, вы могли бы начать с помощью DateTime.UtcNow, передавая что к клиенту, а затем выполнять соответствующие преобразования часового пояса на клиенте. Обычно это разумный способ работы - пока вы можете выполнять обработку на клиенте (например, в JavaScript).

В качестве альтернативы, попросите у пользователя свой часовой пояс, чтобы вы могли обслуживать страницы, которые используют местное время, используя TimeZoneInfo. Конечно, если вы знаете все ваши пользователи находятся в Египте, вы могли бы просто просто записать это.

+0

Спасибо Mr.Jon, Вы имели в виду, что я должен использовать DateTime.UtcNow метод в моем приложении, то я может определить переменную с часовым поясом Египта, например = 2, тогда я добавляю это значение в DateTime.UtcNow каждый раз, когда я вставляю данные в базу данных –

+1

@Amira Elsayed - Если ваши пользователи всегда будут в одном и том же часовом поясе, вы можете захотеть сохраняйте время как универсальное время в базе данных. –

+1

@Amira: Как говорит Джеймс, обычно * рекомендуется хранить базу данных в UTC. Выполняйте преобразования, когда вы * отображаете * данные. –

0

Ну, вы можете использовать DateTime.UTCNow, а затем конвертировать в местное время.

+0

Конвертировать в местное время не будет, потому что это будет локально для США. –

+0

То, что я имею в виду, конвертировать в желаемое местное время. В этом случае египетское время. – Scott

2

Создайте время, используя UTS, чтобы оно было нормированным, а затем отображаться в зависимости от местоположения пользователя или его предпочтений.

Вы можете прочитать также: Creating a DateTime in a specific Time Zone in c# fx 3.5

3

Вы должны преобразовать значения даты и времени в часовом поясе пользователей. Один простой способ сделать это было бы назвать ConvertTime и передать в нужном часовом поясе следующим образом:

DateTime now = TimeZoneInfo.ConvertTime(DateTime.UtcNow, 
    TimeZoneInfo.FindSystemTimeZoneById("Egypt Standard Time")); 
+0

[здесь] (https://msdn.microsoft.com/en-us/library/ms912391%28v=winembedded.11%29.aspx) является «Значения индекса зоны времени» из 'msdn', может помочь кому-то. – stom

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