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

本文关键字:时间 客户端 转换 服务器 UTC | 更新日期: 2023-09-27 18:18:44

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

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

描述

您可以使用TimeZoneInfo

将UTC DateTime转换为本地时间

示例

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