这里的情况很棘手。我们的应用程序在设置了特定时区(假设亚洲时间)的系统中运行。然而,客户请求他的应用程序使用欧洲时区运行。
由于我们的数据不是以 UTC 存储的,我们是否可以在应用程序中设置区域设置,以便显示的所有日期都将使用欧洲时区?我知道我们可以在 Web.Config 中设置文化信息,但我不确定这是否也可以帮助设置时区。
顺便说一句,我们的应用程序正在使用 C# WebForm 和 MSSQL 2008 R2 运行。
最佳答案
您的数据存储方式与您选择的显示方式完全不同。假设日期和时间代表固定时间点(而不是 float 的“本地”时间),我会尝试使用 UTC 格式的 DateTime
值编写尽可能多的应用程序。当您检索数据时,如果需要,可以将其从“存储时区”转换(您没有说明数据存储在哪个区域),并在存储时将其转换回来。当您显示它时,请在您需要的任何时区中显示它。
就 .NET 而言,您不需要在全局级别进行设置 - 您可以拥有应用程序范围的配置设置(如果您确实愿意)和“帮助程序”代码,以便在您需要时进行转换显示。不过,我会非常明确地这样做:您确实不希望在涉及时间内容时隐式发生转换。
(我还要提到,当涉及到日期和时间时,我的 Noda Time 库可能会作为更清晰的 API 发挥作用。当然,我有偏见。我还建议迁移到以 UTC 存储所有内容如果可以的话……当然,只有在适当的情况下。)
关于c# - 在应用程序中强制使用特定时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15426411/