我从服务器本机(C ++)应用程序获得了UTC格式的FILETIME结构。在托管(C#)客户端,我需要将其显示为客户端(!)本地时间。我是否需要有关于服务器时区的FILETIME传输信息才能完成此任务?或者这些信息已经包含在UTC格式的FILETIME中?
答案 0 :(得分:7)
您可以使用TimeZoneInfo
TimeZoneInfo.ConvertTimeFromUtc(YourDateTime, TimeZoneInfo.Local);
如果您知道名称,可以将UTC日期时间转换为任何时区。例如。
TimeZoneInfo.ConvertTimeFromUtc(YourDateTime,
TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
答案 1 :(得分:0)
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));
答案 2 :(得分:0)
我不知道你的结构是什么,但如果你可以将它转换为标准时间字符串,DateTime类将解析它。然后只需使用ToLocalTime方法。
DateTime time = DateTime.Parse(FILETIME.ToString());
time.ToLocalTime();