c# - 在应用程序中强制使用特定时区

标签 c# asp.net webforms timezone

这里的情况很棘手。我们的应用程序在设置了特定时区(假设亚洲时间)的系统中运行。然而,客户请求他的应用程序使用欧洲时区运行。

由于我们的数据不是以 UTC 存储的,我们是否可以在应用程序中设置区域设置,以便显示的所有日期都将使用欧洲时区?我知道我们可以在 Web.Config 中设置文化信息,但我不确定这是否也可以帮助设置时区。

顺便说一句,我们的应用程序正在使用 C# WebForm 和 MSSQL 2008 R2 运行。

最佳答案

您的数据存储方式与您选择的显示方式完全不同。假设日期和时间代表固定时间点(而不是 float 的“本地”时间),我会尝试使用 UTC 格式的 DateTime 值编写尽可能多的应用程序。当您检索数据时,如果需要,可以将其从“存储时区”转换(您没有说明数据存储在哪个区域),并在存储时将其转换回来。当您显示它时,请在您需要的任何时区中显示它。

就 .NET 而言,您不需要在全局级别进行设置 - 您可以拥有应用程序范围的配置设置(如果您确实愿意)和“帮助程序”代码,以便在您需要时进行转换显示。不过,我会非常明确地这样做:您确实不希望在涉及时间内容时隐式发生转换。

(我还要提到,当涉及到日期和时间时,我的 Noda Time 库可能会作为更清晰的 API 发挥作用。当然,我有偏见。我还建议迁移到以 UTC 存储所有内容如果可以的话……当然,只有在适当的情况下。)

关于c# - 在应用程序中强制使用特定时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15426411/

相关文章:

c# - 使用 C# 在 ASP.NET 中按修改或创建日期对文件进行排序

c# - 动态创建文本输入 (ASP.net/C#)

asp.net - li标签图片定制

forms-authentication - 将表单例份验证与 Web API 结合使用

c# - 将 IQueryable 转换为 IOrderedQueryable

c# - UIDatePicker 日期 : 1 Hour Wrong 的时区问题

c# - 从 ListView 中拖动文件

javascript - 使用 javascript 确认时,Asp.net requiredfieldvalidator 停止工作

C# 精确显示标签 X 秒并隐藏它 Y 秒

c# - 传递可以 "fit"接口(interface)的 C# 参数,但实际上并不实现它