abdul subhan mohammed Ответов: 2

Как получить местное время, а не серверное в c#.


Дорогие Все,

У меня есть один сайт, для этого у нас есть сервер, который находится в нас.

И когда я использую DateTime.Теперь он дает серверное время, но я хочу местное время, то есть,
мы будем использовать этот сайт только в Индии, позже мы можем использовать его за пределами Индии.

Итак, когда я использую этот сайт в Индии, то хочу хранить india time(IST). но не наше серверное время.

Что я уже пробовал:

я предполагаю, что использовать UTC и получить смещение в минутах. А затем сопоставьте utc с местным временем.

What, if i use this code, to get offset in minutes?
//OFFSET IN MINUTES
            TimeZoneInfo AST = TimeZoneInfo.FindSystemTimeZoneById("Arab Standard Time");
            DateTime utc = DateTime.UtcNow;
            DateTime KSA = TimeZoneInfo.ConvertTimeFromUtc(utc, AST);
            double offset = KSA.Subtract(utc).TotalMinutes;


пожалуйста, помогите мне, ребята.


Спасибо

2 Ответов

Рейтинг:
2

OriginalGriff

Вы не можете получить местное время непосредственно в C#, так как оно всегда работает на сервере, и это время клиента, которое вам нужно.
Что вам нужно сделать, так это использовать Javascript для доступа к местному времени: Учебник По Javascript - Дата[^] и храните его в скрытом поле на странице, к которой может получить доступ сервер.


Рейтинг:
0

Jochen Arndt

Всегда храните время в UTC.

Это значительно упрощает время обработки (сравнимо, нет летнего времени, обычно известного как точное, потому что серверы должны синхронизировать свои часы, в то время как клиентские часы могут быть выключены).

Если вы хотите показать время позже, вы можете преобразовать его в местное время. Как это сделать, зависит от того, какая система генерирует выходные данные. Если это локальная система (браузер), вы можете использовать JavaScript. Если это сервер, то вы должны знать часовой пояс клиента (например, хранящийся в виде поля в базе данных пользователя) и использовать процедуры преобразования языков программирования, используемых на сервере.

[РЕДАКТИРОВАТЬ]
Для обновленного вопроса с некоторым кодом нужно рассчитать смещение.

Если дата не будет сохранена, используйте JavaScript для отображения местного времени клиента.

Если время хранится на сервере, используйте UTC. Затем преобразуйте его для отображения, как описано выше. Но не используйте расчетное смещение. Используйте имя часового пояса или идентификатор, который должен быть сохранен для ваших пользователей. Вычисленное смещение может включать смещение DST (летнее время) (кстати: базовое смещение можно получить из свойства TimeZonInfo.BaseUtcOffset).
[/РЕДАКТИРОВАТЬ]