我正在使用WCF服务,它返回服务器的当前时间.我的客户处于不同的时区.当我调用此服务时,它会自动将服务器返回的时间转换为本地时间,这是我不想要的.我怎么忽略这个?
将您从 WCF 服务发出的时间转换为 UTC,并且当您在客户端中创建新时间时,将它们指定为类型 UTC。这将以通用标准时区为基准时间。您可以向客户显示时间并确保将其识别为 UTC 时间。这将减少关于那个时间到底是什么的任何差异或模糊性。
DateTime serverTimeRaw = myService.GetServerTime();
DateTime serverTimeUTC = new DateTime(serverTimeRaw.Ticks, DateTimeKind.Utc);
Console.WriteLine(serverTimeUTC); // Prints server time as UTC time
Run Code Online (Sandbox Code Playgroud)
如果您确实需要表示相应时区的时间,则需要将时区信息与日期时间一起发送。我建议创建一个封装这两条信息的类型,然后返回该类型,而不是返回 DateTime 本身。时区信息不是 DateTime 的固有组成部分。这是两个独立的问题,并且仅在实际组合时提供复合含义。
class ZonedDateTime
{
public DateTime DateTimeUtc { get; set; }
public TimeZoneInfo TimeZone { get; set; }
public DateTime ToDateTime()
{
DateTime dt = TimeZoneInfo.ConvertTime(DateTimeUtc, TimeZone);
return dt;
}
}
// ...
ZonedDateTime zdt = myService.GetServerZonedTime();
DateTime serverTimeActual = zdt.ToDateTime();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2061 次 |
| 最近记录: |