установить глобальный часовой пояс в ядре .net - PullRequest
0 голосов
/ 21 февраля 2019

В .Net Core 2 -

Есть ли способ установить часовой пояс приложения глобально, чтобы всякий раз, когда я запрашиваю DateTime.Now, я получал текущее время для желаемого часового пояса (скажем, по Гринвичу+3) вместо времени сервера, на котором размещено приложение?

Я нашел хорошее место, чтобы иметь конфигурацию, при условии, что это будет файл Startup.cs, но мои поисковые запросы меня ни к чему не приводят.

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Нет.

DateTime.Now всегда возвращает время в местном часовом поясе системы.

0 голосов
/ 21 февраля 2019

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

public static class MyTimeZone
{
    public static DateTime Now => DateTime.UtcNow.AddHours(3);
}

, и вы можете просто запросить время, подобное этому

MyTimeZone.Now

Если часовой пояс динамический, просто измените его на функцию.

public static class MyTimeZone
{
    public static DateTime Now(int offset) => DateTime.UtcNow.AddHours(offset);
}
0 голосов
/ 21 февраля 2019

Вы можете использовать TimeZoneInfo для этого

DateTime eastern = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, "Eastern Standard Time");

Заменить на нужный часовой пояс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...