C# NET中的时区问题
我在东海岸,所以我的时区是C# NET中的时区问题,c#,datetime,.net-4.0,timezone,C#,Datetime,.net 4.0,Timezone,我在东海岸,所以我的时区是东部标准时间,偏移量为-05:00:00。但是我注意到,当调用像DateTimeOffset.UtcNow和DateTime.Now.ToUniversalTime()这样的方法时,它只是声称我的偏移量为-04:00:00 DateTime.Now // 6/8/2011 8:08:26 PM DateTime.UtcNow // 6/9/2011 12:08:26 AM DateTimeOffset.UtcNow // 6/9/2011 12:08:26 AM +
东部标准时间
,偏移量为-05:00:00
。但是我注意到,当调用像DateTimeOffset.UtcNow
和DateTime.Now.ToUniversalTime()
这样的方法时,它只是声称我的偏移量为-04:00:00
DateTime.Now
// 6/8/2011 8:08:26 PM
DateTime.UtcNow
// 6/9/2011 12:08:26 AM
DateTimeOffset.UtcNow
// 6/9/2011 12:08:26 AM +00:00
DateTime.Now.ToUniversalTime()
// 6/9/2011 12:08:26 AM
TimeZoneInfo.ConvertTimeToUtc(DateTime.Now)
// 6/9/2011 12:08:26 AM
TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now)
// -04:00:00
TimeZone.CurrentTimeZone.StandardName
// Eastern Standard Time
TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time").BaseUtcOffset
// -05:00:00
正如你所看到的,尽管它清楚地说我在“东部标准时区”,但它只计算我的偏移量为
-05:00:00
。我还验证了我的windows时钟是否显示我在正确的时区。有人知道这里发生了什么吗?可能和夏天有关。你现在不是在东部夏令时吗?这是UTC减4。可能与夏天有关。你现在不是在东部夏令时吗?这是UTC减4。我认为它是-4,因为它现在是夏令时。我认为它是-4,因为它现在是夏令时。如果是这样的话,我在进行转换时应该如何考虑这一点?取决于您进行转换的目的。如果他们依赖于EST,而不是你现在的实际时区,使用一个给你-5。否则,请使用提供-4的应用程序。当我过去编写跨越不同时区的应用程序时,我发现存储UTC日期/时间比存储本地时间更容易。这样,我只需将时间转换为本地时区。@标记如果要将服务器上的时区转换为用户的时区,我该如何做?如果我知道用户所在的时区,那么应该严格地在客户端进行转换,还是在服务器上正确地进行转换?如果是这样,在进行转换时,我应该如何考虑这一点?取决于您进行转换的目的。如果他们依赖于EST,而不是你现在的实际时区,使用一个给你-5。否则,请使用提供-4的应用程序。当我过去编写跨越不同时区的应用程序时,我发现存储UTC日期/时间比存储本地时间更容易。这样,我只需将时间转换为本地时区。@标记如果要将服务器上的时区转换为用户的时区,我该如何做?如果我知道用户所在的时区,那么应该严格地在客户端进行转换,还是在服务器上正确地进行转换?