Convert server UTC time to client local time

2019-05-21 14:01发布

问题:

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?

回答1:

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

  • TimeZoneInfo Class
  • How to: Instantiate a TimeZoneInfo Object


回答2:

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));


回答3:

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();