我从服务器本地(c++)应用程序获得一个UTC格式的FILETIME结构。在托管(c#)客户端,我需要将其显示为客户端(!)本地时间。我是否需要连同关于服务器时区的FILETIME传输信息来完成此操作?或者这些信息已经在FILETIME中以UTC格式包含?
描述
您可以使用TimeZoneInfo
示例
TimeZoneInfo.ConvertTimeFromUtc(YourDateTime, TimeZoneInfo.Local);
如果您知道名称,可以将UTC DateTime转换为任何时区。例如,
TimeZoneInfo.ConvertTimeFromUtc(YourDateTime,
TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
的更多信息
- <
- TimeZoneInfo类/gh>
- 如何:实例化TimeZoneInfo对象
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));
我不知道你的结构是什么,但是如果你能把它转换成标准时间字符串,DateTime类会解析它。然后只需使用ToLocalTime方法。
DateTime time = DateTime.Parse(FILETIME.ToString());
time.ToLocalTime();