如何获得东部标准时间[美国]从我的本地服务器时间在ASP.NET 1.1

本文关键字:服务器 时间 ASP NET 我的 标准时间 东部 何获得 美国 | 更新日期: 2023-09-27 18:04:55

我目前正在做一个asp.net 1.1的项目。我有一个要求,我需要时区更改为东部标准时间[美国]。我在。net 4.5中有一段代码,它似乎有帮助,但在。net 1.1中不支持。

下面是。net 4.5 的代码
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);

你能帮我一下吗

如何获得东部标准时间[美国]从我的本地服务器时间在ASP.NET 1.1

功能在。net 1.1中非常有限,就像其他人评论的那样,你真的不应该再使用它了。

在那些日子里,我们不得不手动调整时间,因为我们没有帮助TimeZoneInfo类。

DateTime utcDt = DateTime.UtcNow();
int easternTimeOffset = -5;
DateTime easternTime = utcDt.AddHours(easternTimeOffset);

这个例子中的问题是在夏令时期间easternTimeOffset为-4,并且框架中没有好的方法来确定要使用的当前偏移量。这个问题在后来的。net版本中通过引入TimeZoneInfo类解决了。

所以,如果你想以更好的方式做事,你应该考虑更新应用程序,使用新的支持版本的。net

你真的应该升级。你只需要。net 3.5就可以使用TimeZoneInfo。如果你至少可以使用。net 2.0,那么你可以尝试TZ4NET。但是如果您使用的是1.1版本,则必须使用如下代码:

public static DateTime GetCurrentEasternTime()
{
    // The current rule for US Eastern Time is:
    //   -5 => -4: 2nd Sunday in March    (2:00 AM Local Time, 7:00 AM UTC)   
    //   -4 => -5: 1st Sunday in November (2:00 AM Local Time, 6:00 AM UTC)
    DateTime utcNow = DateTime.UtcNow;
    DateTime springTransitionUtc = new DateTime(utcNow.Year, 3, 8, 7, 0, 0);
    while (springTransitionUtc.DayOfWeek != DayOfWeek.Sunday)
        springTransitionUtc = springTransitionUtc.AddDays(1);
    DateTime fallTransitionUtc = new DateTime(utcNow.Year, 11, 1, 6, 0, 0);
    while (fallTransitionUtc.DayOfWeek != DayOfWeek.Sunday)
        fallTransitionUtc = fallTransitionUtc.AddDays(1);
    bool isDst = utcNow >= springTransitionUtc && utcNow < fallTransitionUtc;
    int offset = isDst ? -4 : -5;
    DateTime easternNow = utcNow.AddHours(offset);
    return easternNow;
}