Convert server UTC time to client local time

2019-05-21 14:07发布

I get from server native (C++) application a FILETIME structure in UTC format. On the managed (C#) client side I need to show it as client(!) local time. Do I need along with FILETIME transfer information about server time zone to accomplish this? Or such information already contains in FILETIME in UTC format?

3条回答
欢心
2楼-- · 2019-05-21 14:35

Description

You can convert a UTC DateTime to local Time using TimeZoneInfo

Sample

TimeZoneInfo.ConvertTimeFromUtc(YourDateTime, TimeZoneInfo.Local);

You can convert a UTC DateTime to any timezone, if you know the name. For example.

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

More Information

查看更多
倾城 Initia
3楼-- · 2019-05-21 14:46
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));
查看更多
淡お忘
4楼-- · 2019-05-21 14:48

I don't know what your structure is, but if you can convert it to standard time string, DateTime class will parse it. Then simply use the ToLocalTime method.

DateTime time = DateTime.Parse(FILETIME.ToString());
time.ToLocalTime();
查看更多
登录 后发表回答