根据时区的偏移和后缀查找夏令时指示

时间:2011-09-10 22:03:55

标签: c# asp.net timezone

我正在使用地球工具webservice来查找基于lat long的时区。我在网络服务中得到了偏移量和后缀。

Earth Tool Webservice

现在我遇到的问题是我需要从偏移量和后缀中获取时区,并确定该区域是否有夏令时。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

.Net有一个很好的TimeZoneInfo.Local.IsDaylightSavingTime,但遗憾的是你没有足够的信息来创建一个实例。

但是你应该能够做到这样的事情:

var offSet = -7;
var utcDateTimeStr = "2011-09-10 22:15:38";
var localWithDSStr = "10 Sep 2011 15:15:38";

// utc time
DateTime utcDateTime = DateTime.SpecifyKind(
                           DateTime.Parse(utcDateTimeStr), DateTimeKind.Utc);
// time taking into account daylight savings
DateTime localWithDS = DateTime.SpecifyKind(
                           DateTime.Parse(localWithDSStr), DateTimeKind.Local);
// time not taking into account daylight savings
DateTime localWithoutDS = utcDateTime.AddHours(offSet);

// is the time given adjusted for daylight savings
TimeSpan diff = (localWithoutDS - utcDateTime);
bool isDayLightSaving = diff.Hours != offSet;

答案 1 :(得分:0)

如果在lang + lot上有夏令时,您使用的API会返回,您不必从偏移和后缀中找到它。

见:

  

DST
  是否包括当地时间和同位素元素   夏令时。如果他们这样做,这个元素的价值将是   真正。如果他们不这样做,则该值将为False。如果不能   确定是否应该使用夏令时,   值将是未知的。自:1.1

如果你想确定它是你自己的,没有这个属性,你必须知道国家指向的地方,因为DST是特定国家的。