65.9K
CodeProject 正在变化。 阅读更多。
Home

在 ASP.NET 3.5 应用程序中轻松处理不同的时区

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (9投票s)

2008 年 6 月 18 日

LGPL3

2分钟阅读

viewsIcon

40359

downloadIcon

663

一个类库,用于辅助在同一个 ASP.NET 3.5 应用程序中使用不同的时区

引言

在使用 ASP.NET 应用程序时,处理 DateTime 结构时,时区通常是一个问题。开发人员可能会遇到两种常见的场景。第一种是,您将应用程序放置在与您试图运营的业务不同的时区的托管服务器上。第二种是,您拥有来自不同时区的用户,并且希望以用户的本地时区而不是服务器的时区来显示日期和时间。

Hosted Time Zone 通过提供两个设置来解决这个问题。ApplicationTimeZone 设置整个应用程序要使用的时区。ThreadTimeZone 设置当前运行线程要使用的时区,如果线程上没有指定时区,则默认使用 ApplicationTimeZone。如果您正在使用 ThreadTimeZone,则需要确保为发往服务器的每个请求设置该值。您通常会在 global.asax 文件中执行此操作,例如在 Application_BeginRequest 处理程序中。

使用代码

要实际执行转换,您可以调用 ApplicationTimeZone 类的静态方法 ToAppTimeFromAppTime、ToThreadTime 或 FromThreadTime。此外,还声明了 DateTimeDateTimeOffset 类的扩展方法,它们以更简洁的方式执行相同的功能。为了使扩展方法起作用,您必须导入 HostedTimeZone 命名空间。

您应该注意到,对于 DateTimeOffset 类没有 FromAppTimeFromThreadTime 的重载。这是因为 DateTimeOffsetToLocalTime 方法执行相同的功能,因此它们是冗余的。

关注点

此库需要 TimeZoneInfo 类,该类直到 .NET Framework 3.5 才可用。因此,它与 ASP.NET 2.0 或更早版本不兼容。

历史

1.0.0.0 6/18/2008 初始版本

© . All rights reserved.