将服务器UTC时间转换为客户端本地时间

时间:2011-12-23 09:32:26

标签: c# c++ timezone filetime

我从服务器本机(C ++)应用程序获得了UTC格式的FILETIME结构。在托管(C#)客户端,我需要将其显示为客户端(!)本地时间。我是否需要有关于服务器时区的FILETIME传输信息才能完成此任务?或者这些信息已经包含在UTC格式的FILETIME中?

3 个答案:

答案 0 :(得分:7)

描述

您可以使用TimeZoneInfo

将UTC日期时间转换为本地时间

示例

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