【发布时间】:2019-11-30 21:30:18
【问题描述】:
似乎在 C# 中无法为应用程序设置时区,所以我想将 DateTime.Now 更改为我在无法更改的 UTC 上运行的机器上的时区。 我想使用 System 命名空间来隐藏 DateTime.Now,因为这样我就不会犯使用错误的 DateTime.Now 的错误,因为它会被隐藏。这就是我想要实现的目标:
namespace System
{
public static class DateTime
{
public new static DateTime Now => System.DateTime.UtcNow.AddHours(1);
}
}
但它不起作用,因为:
“...DateTime.cs”中的“DateTime”类型与导入的冲突 在“System.Runtime”中输入“DateTime”。
有没有办法做这样的事情?
编辑: 我想知道是否可以“覆盖” System.DateTime,如果可以,该怎么做。
【问题讨论】:
-
It seems like in C# it is not possible to set the timezone for a Application请详细说明。你可能建立在一个错误的前提下你的推理。 -
我发现了这个:stackoverflow.com/a/33869808/8529170,但这不适用于整个应用程序,许多线程仅适用于当前线程。但我发现只有人写它是不可能从完整的应用程序。
-
不,我想“覆盖” System.DateTime。现在,问题的标题是正确的,但没有一个答案能满足您的链接问题所要求的,或者能满足我的要求
-
@MichaelSantos 我认为您正在尝试解决错误的问题。如果您需要应用程序的某些方面可以跨时区移植,那么您应该始终使用 UTC 时间。您可以根据需要将 UTC 时间转换为本地时间。如果您想避免使用错误的时间方法,请为您的所有日期处理代码编写单元测试。
标签: c#