Конвертировать UTC время сервера в локальное время клиента - PullRequest
2 голосов
/ 23 декабря 2011

Я получаю из серверного приложения (C ++) структуру FILETIME в формате UTC. На стороне управляемого (C #) клиента мне нужно показать его как клиентское (!) Местное время. Нужно ли мне вместе с FILETIME передавать информацию о часовом поясе сервера для этого? Или такая информация уже содержится в FILETIME в формате UTC?

Ответы [ 3 ]

7 голосов
/ 23 декабря 2011

Описание

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

Пример

TimeZoneInfo.ConvertTimeFromUtc(YourDateTime, TimeZoneInfo.Local);

Вы можете преобразовать дату и время UTC в любой часовой поясВы знаете имя.Например.

TimeZoneInfo.ConvertTimeFromUtc(YourDateTime, 
                TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));

Дополнительная информация

0 голосов
/ 07 ноября 2013

Я не знаю, какова ваша структура, но если вы сможете преобразовать ее в стандартную строку времени, класс DateTime проанализирует ее. Затем просто используйте метод ToLocalTime.

DateTime time = DateTime.Parse(FILETIME.ToString());
time.ToLocalTime();
0 голосов
/ 23 декабря 2011
create a class
public class TimeConverter
    {
        public static DateTime ConvertToLocalTime(DateTime utcTime, string timeZoneId)
        {
            if (string.IsNullOrEmpty(timeZoneId))
            {
                return utcTime;
            }
            return TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcTime, timeZoneId);
        }
}

In controller use TimeConverter

TimeConverter.ConvertToLocalTime(Date, yourTimeZone));
...