检查夏令时是否有效?

Meg*_*ane 31 c# datetime dst windows-phone-7

如何检查丹麦的白天时间节省是否已经生效,如果是,那么我的数据加1小时,否则不行?我有一个xml文件:

<day = "1"
month = "5"
sunrise ="06:30"
sunset ="21:30"
/>
Run Code Online (Sandbox Code Playgroud)

Eug*_*ene 66

认为您需要将此xml转换为DateTime,然后使用TimeZoneInfo类.

如果丹麦当地时间:

DateTime thisTime = DateTime.Now;
bool isDaylight = TimeZoneInfo.Local.IsDaylightSavingTime(thisTime);
Run Code Online (Sandbox Code Playgroud)

否则你需要获得丹麦TimeZone:

DateTime thisTime = DateTime.Now;
// get Denmark Standard Time zone - not sure about that
TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Denmark Standard Time");
bool isDaylight = tst.IsDaylightSavingTime(thisTime);
Run Code Online (Sandbox Code Playgroud)


Mei*_*ber 7

当我编码如上 - 对于New-York,我在调试器中发现时间设置正确(包括DST)

TimeZoneInfo nyTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");

DateTime nyTime = GetLocalDateTime(DateTime.UtcNow, nyTimeZone);

if (nyTimeZone.IsDaylightSavingTime(nyTime))
    nyTime = nyTime.AddHours(1);

public static DateTime GetLocalDateTime(DateTime utcDateTime, TimeZoneInfo timeZone)
    {

        utcDateTime = DateTime.SpecifyKind(utcDateTime, DateTimeKind.Utc);

        DateTime time = TimeZoneInfo.ConvertTime(utcDateTime, timeZone);

        return time;

    }
Run Code Online (Sandbox Code Playgroud)


Mat*_*hew 6

您可以使用TimeZoneInfo.IsDaylightSavingTime

DateTime theDate = new DateTime(2012, 5, 1); // may 1st
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
bool isCurrentlyDaylightSavings = tzi.IsDaylightSavingTime(theDate);
Run Code Online (Sandbox Code Playgroud)