c# - 使用与本地机器不同的时间
问题描述
我有一个在 Windows 服务器上运行的 C# 应用程序。但是该服务器的时间不正确(时区很好)。
如何强制我的 C# 进程以 DateTime.Now 将返回实时但不更改本地机器时间的方式将自身同步到时间服务器。
我无法更改代码中使用的所有“DateTime.Now”,因为太多了。此外,还有一些外部 .net DLL 需要使用相同的 DateTime 值。
解决方案
如何强制我的 C# 进程以 DateTime.Now 将返回实时但不更改本地机器时间的方式将自身同步到时间服务器。
你不能:
获取一个 DateTime 对象,该对象设置为此计算机上的当前日期和时间,以本地时间表示。
在内部,在 Windows 上,这会调用GetSystemTimeAsFileTime()
orGetSystemTimePreciseAsFileTime()
函数。换句话说,你不能轻易地规避DateTime.Now
返回机器的时间。
当然,使用detours或Moles(在 VS2012 中被 Fakes 和 VS2015 中的 IntelliTest 取代 [需要企业许可证],但请参阅VS 2008/2010 下载),您可以重新路由这些 Windows API 或 .NET API 调用,但您通常不会不想。
而是要求服务器所有者使用 NTP 设置适当的时间同步。
推荐阅读
- c - AddressSanitizer:x86 汇编器中数组上的堆栈缓冲区溢出
- android - java.lang.IndexOutOfBoundsException:检测到不一致。androidx.leanback.widget.HorizontalGridView 中的项目位置无效
- prolog - 计算没有'is'的算术表达式的加法和减法
- laravel - 如何将 select2 多选与 livewire 一起使用
- c# - 如何在 Unity 中序列化和反序列化包含 Gameobject 和 Vector2 的字典
- mysql - 如何为一对多关系建模参考完整性,其中 many > 0
- json - 如何从 Json 类型中获取数据
- python - Selenium chromedriver ver 87,禁用密码管理器不工作
- javascript - 将 Object 转换为 DOM 返回 [Object object]
- reactjs - Babel 配置文件在 Lerna monorepo 中不起作用