C# 日期时间和通用时间

C# 日期时间和通用时间,c#,.net,timezone,C#,.net,Timezone,我对.net的DateTime组件感到困惑。服务器以UTC+4运行,我的客户端位于不同的时区。因此,服务器上的时间处于UTC+4模式。我已经尝试将其转换到UniversalTime,并在发送到客户端之前将其发送到ToBinary,但在客户端机器上,代码看起来像 if ((Program.license.EndDate.ToUniversalTime() - DateTime.Now.ToUniversalTime()).TotalMinutes <= 5) { //do

我对.net的DateTime组件感到困惑。服务器以UTC+4运行,我的客户端位于不同的时区。因此,服务器上的时间处于UTC+4模式。我已经尝试将其转换到UniversalTime,并在发送到客户端之前将其发送到ToBinary,但在客户端机器上,代码看起来像

if ((Program.license.EndDate.ToUniversalTime() 
    - DateTime.Now.ToUniversalTime()).TotalMinutes <= 5)
{ 
    //dosomething 
}
if((Program.license.EndDate.ToUniversalTime)()

-DateTime.Now.ToUniversalTime()).TotalMinutes您必须知道从客户端发送的DateTime的日期类型(本地、通用或未指定)。如果您试图将未指定的类型转换为通用,据我所知,它将作为本地时间处理。(如果我错了,请有人纠正我。)


服务器/客户端日期和时间的最佳实践是始终使用UTC.In.Net使用
DateTime.UtcNow
而不是
DateTime.Now.ToUniversalTime()

是web应用程序还是winforms应用程序?您是使用服务器的本地时区存储Program.license.EndDate?还是将其存储为UTC?如果您要与UTC进行比较,我会将其存储为UTC。然后您可以在客户端上使用DateTime.UtcNow以UTC获取本地时间,以便进行比较。