Страницы

Поиск по вопросам

четверг, 31 января 2019 г.

Как получить местное время из серверного?

На локальной машине функция DateTime.Now.ToString() дает результат
27.06.2016 15:27:55
, а при развертывании на сервер
6/28/2016 1:14:55 AM
Как привести второй вариант в первому? Желательно без разбора строк.


Ответ

DateTime.Now.ToString(CultureInfo.GetCultureInfo("ru-ru"))
Класс CultureInfo находится в пространстве имен System.Globalization
Если получение строкового представления даты вызывается многократно в разных местах, и каждый раз явно указывать язык неудобно, то можно установить локаль в рамках всего треда:
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("ru-ru");

Если сервер находится в другом часовом поясе, а дату нужно получить, например, по московскому времени, то воспользуйтесь классом TimeZoneInfo
static string GetCurrentDateTime() { var tz = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time"); return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz) .ToString(CultureInfo.GetCultureInfo("ru-ru")); }
Список идентификаторов часовых поясов можно получить, вызвав TimeZoneInfo.GetSystemTimeZones()

Комментариев нет:

Отправить комментарий