有没有办法为 ASP.NET 中的应用程序定义时区?

2023-12-20

有没有一种方法可以为 ASP.NET 中的应用程序定义时区,以便隐式转换从当前服务器时间读取/与当前服务器时间比较的所有时间,或者我是否需要在每次 DateTime.Now 调用时放入转换语句?


我不确定 ASP 的最新发展,但是这个2006年的文章 http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/772971a4-9f1b-4004-a873-c1e0e2098852/提供了一个有趣的答案:

问题是时区信息无法通过网络浏览器直接获得。您可以使用启发式方法来确定正确的时区,或者您必须根据用户的选择来存储用户的时区设置。

.Net 3.5 及其版本可能不需要以下内容时区信息..转换时间 http://msdn.microsoft.com/en-us/library/system.timezoneinfo.converttime.aspx方法,但为了完整性起见:

完成时区设置后,您现在需要转换时间。您应该始终以 UTC 格式将日期/时间值存储在数据库中。这消除了许多转换问题。如果您将信息存储在 UTC 中,那么当您向用户显示数据时,您只需要从 UTC 转换为用户的本地时区,并且当您从用户那里获取日期/时间值时,您需要从他们的时区转换为 UTC。

让这变得更加困难的是 TimeZone 类并不是那么有用。幸运的是,在 v2.0 中,DateTime 已更新为支持指示时间是否为 UTC 的指示器。您可以使用 DateTime.ToUniversalTime 方法将 DateTime 转换为 UTC。不幸的是,你无法将其转换回来.

The 至当地时间 http://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime.aspx方法使用本地时区,当在服务器上运行时,使用服务器的时区,这不是您想要的。然而更糟糕的是,您不能简单地创建 TimeZone 对象并使用它,因为不存在该支持。

迈克尔·布鲁姆 (Michael Brumm) 创造了一个不错的小班 http://www.michaelbrumm.com/simpletimezone.html能够轻松创建和使用时区。我个人在我自己的应用程序中使用了该代码的经过大量修改的版本,并且效果很好。以下是将数据库 UTC 值转换为本地用户时区的步骤。

1)获取用户存储的时区值
2) 创建一个 SimpleTimeZone 类来包装它(使用某种映射方案将 DB 值映射到底层 Windows 注册表版本)
3) 使用SimpleTimeZone.ToLocalTime方法将DateTime值转换为本地时间。

出于性能原因,您可能应该获取并初始化 SimpleTimeZone 实例,并将其缓存在 Items 属性中以达到请求的长度,这样您就不必继续创建它。

要从用户的本地时区转换为 UTC,请执行相反的操作:

1)从用户处获取存储的时区值
2)创建一个SimpleTimeZone类来包装它
3) 使用 SimpleTimeZone.ToUniversalTime 方法将 DateTime 转换为 UTC。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法为 ASP.NET 中的应用程序定义时区? 的相关文章

随机推荐

  • Android 设置超时时间的方法

    如果在特定时间段内服务器没有响应 是否有任何方法可以在 android 中设置超时 以下是我用于超时的代码 uri new URI url HttpGet method new HttpGet uri method addHeader Co
  • 您最喜欢用什么方法来检查 HTML COLOR 是否有效?

    我使用 C 和 ASP NET 4 WebControls 我的页面上有一个文本框 用户可以输入十六进制格式 ff0000 或 HTML 格式 红色 的 HTML 颜色 我最初的想法是 编写一个能够验证该用户输入的正则表达式太困难了 因此我
  • 如何通过 matplotlib 在矩形条上绘制温度(应力)?

    我尝试使用 matplotlib 库绘制梁的应力 我已经使用公式计算并绘制了它作为示例 如图 1 所示 您会看到绿色光束在元素 3 和元素 8 处具有更大的应力 因此如果我用彩虹渐变填充颜色 蓝色光束的整体颜色将相同 但绿色光束将具有不同的
  • 警报通知立即触发。安卓

    我正在开发一个提醒 它会在固定时间向用户发送通知 警报立刻响起 我尝试了大部分建议stackoverflow 但仍然有同样的问题 请帮我解决这个问题 服务器数据 user reminder id 75 name Morning Snacks
  • XSLT 文档功能 - 文件夹层次结构

    我正在使用 xslt 1 0 并尝试使用 XSLT 文档功能将样式表应用到文件夹层次结构 文件夹结构如下 但我似乎无法在网上找到任何关于如何执行此操作的可靠参考 a b c d e f 有没有一种方法可以通过文件夹 a 中的文件将样式表应用
  • 将二维数组转换为二维ArrayList?

    我有这段代码 int pattern new int 1 1 1 1 1 1 1 1 2 0 0 0 2 1 1 0 3 0 3 0 1 1 0 0 4 0 0 1 1 0 3 0 3 0 1 1 2 0 0 0 2 1 1 1 1 1 1
  • 从命令行运行垃圾收集器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否可以从命令行运行 NET 垃圾收集器 例如不写代码 Edit 当被问到这个问题时 我的意思正是这里对
  • 正则表达式仅允许 1-20 范围内的数字

    我想让用户输入0 20范围内的数字 他们都可以输入01和1 这就是我到目前为止所拥有的 1 9 0 1 9 1 0 9 2 0 但它不起作用 问题是 优先级低于 and 所以你的模式意味着 1 9 or 0 1 9 or 1 0 9 or
  • 在项目之间复制源代码时防止eclipse自动导入包

    当我将源代码从一个项目复制到另一个项目时 是否可以防止 Eclipse 自动导入任何模块 我只想复制源代码 然后重命名所有特定的类 我实际上不想使用其他项目中的类 在首选项窗口中 菜单 Windows Preferences 在搜索字段 左
  • Retrofit 2.0 OnFailure - 原始响应

    我在用着retrofit调用网络服务和改造会引发失败 来自 Throwable 的消息给了我 java lang IllegalStateException 预期为 BEGIN OBJECT 但在第 1 行第 1 列路径 处为 STRING
  • 我应该在 SCRIPT 标签中包含 type="text/javascript" 吗?

    我通读了Crockford 的 JavaScript 最佳实践 http javascript crockford com code html 他说 无需使用语言或类型属性 决定 MIME 类型的是服务器 而不是脚本标记 但我从未见过有人省
  • 我可以在保留私钥的同时更改 Android 签名证书主题吗

    我已经开发了一个 Android 应用程序 我正在将其转让给另一个人以进一步开发 我了解到 如果新开发人员使用相同的密钥库 无缝升级过程将继续 Android在更新应用程序时如何验证证书 难道只是仅验证签名或者这样做比较整个证书以及主题名称
  • std::priority_queue 与 std::set 的 Dijkstra 最短路径算法性能

    我想了解这些容器在时间复杂度方面的主要区别 我尝试了 Dijkstra 算法的 3 种实现 如下所述 1 使用一个简单的数组作为队列 2 使用STLpriority queue 3 带有STL集 我测试过的图相当大 它包含超过 150000
  • 如何在Python脚本中激活Conda环境?

    我有一个使用的脚本os system cmd 运行管道 我需要管道在特定的 Conda 环境中运行 所以我尝试执行以下操作 cmd conda activate base cmd os system cmd 但是 我得到 CommandNo
  • 使用VB导入而不是手动导入

    我目前知道如何手动导入这些文件 但我希望通过导入按钮执行 vb 代码以自动执行此操作 有一个链接到导入按钮的字段 要求您输入日期并单击导入 单击 导入 后 我希望它根据文件名上的日期获取文件 这些文件是文本文件 文件名以两种格式编写 第一种
  • 无法获取 org.gradle.api.internal.artifacts.dsl.dependency.DefaultDependencyHandler 类型的对象的未知属性“supportLibraryVersion”

    我在我的 android 项目中添加了一个外部库 gradle 同步后出现以下错误 错误 无法获取 org gradle api internal artifacts dsl dependency DefaultDependencyHand
  • 2020年instagram api更改后如何从instagram公共帐户获取instagram关注者数量?

    我试图仅使用用户的 Instagram 句柄 又名 myusername 来检索关注者计数 我在几个答案中读到 您可以访问 https www instagram com username a 1 来检索包含所有详细信息的 json 块 然
  • Google Compute 实例是否有稳定的公共 DNS 名称?

    这是一个分为两部分的问题 GCE实例有稳定的公共DNS名称吗 例如 公共 IP a b c d 的默认 DNS 名称似乎是 d c b a bc googleusercontent com 如果是 获取此信息的最佳方式是什么 这是我迄今为止
  • Websocket 握手期间发生 Rails ActionCable 错误

    我正在尝试使用 Rails 5 ActionCable 构建一个消息应用程序 但我在 JS 控制台中收到上述错误 ws localhost 3002 cable failed Error during WebSocket handshake
  • 有没有办法为 ASP.NET 中的应用程序定义时区?

    有没有一种方法可以为 ASP NET 中的应用程序定义时区 以便隐式转换从当前服务器时间读取 与当前服务器时间比较的所有时间 或者我是否需要在每次 DateTime Now 调用时放入转换语句 我不确定 ASP 的最新发展 但是这个2006