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