如何获得东部标准时间[美国]从我的本地服务器时间在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);
你能帮我一下吗
功能在。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;
}