使用与本地机器不同的时间

时间:2019-05-02 09:59:35

标签: c#

我有一个在Windows服务器上运行的C#应用​​程序。但是该服务器的时间不正确(时区很好)。

如何强制我的C#进程以DateTime.Now将返回实时但不更改本地机器时间的方式将自身同步到时间服务器。

由于太多,我无法更改代码中所有的'DateTime.Now'使用。此外,还有一些外部.net DLL需要使用相同的DateTime值。

1 个答案:

答案 0 :(得分:1)

  

如何强制我的C#进程以DateTime.Now将返回实时但不更改本地机器时间的方式将自身同步到时间服务器。

您不能:

  

DateTime.Now Property

     

获取一个DateTime对象,该对象设置为此计算机上的当前日期和时间,表示为本地时间。

在Windows内部,这将调用GetSystemTimeAsFileTime()GetSystemTimePreciseAsFileTime()函数。换句话说,您无法轻易规避DateTime.Now返回机器的时间。

当然,可以使用detoursMoles(由VS2012中的Fakes和VS2015中的IntelliTest取代[需要企业许可证],但请参见the VS 2008/2010 downloads),您可以重新路由这些Windows API或.NET API调用,但是您通常不想这么做。

相反,请服务器所有者使用NTP设置适当的时间同步。