Search code examples
c#.netdstdatetimeoffset

How to tell if it's British Summer Time


I have the following code, which should return an offset of 60 (to show that in the UK at present, we are in British Summer Time - ie. 60 minutes ahead of GMT):

var info = TimeZoneInfo.FindSystemTimeZoneById("Greenwich Standard Time");
DateTimeOffset localServerTime = DateTimeOffset.Now;
double off = localServerTime.Offset.TotalMinutes;
return off;

However, it returns 0.

Could anyone please help fix this for me?


Solution

  • Use TimeZoneInfo.IsDaylightSavingTime Method (DateTimeOffset) to find if it is currently Daylight saving for your Timezone.

    var info = TimeZoneInfo.FindSystemTimeZoneById("Greenwich Standard Time");
    DateTimeOffset localServerTime = DateTimeOffset.Now;
    bool isDaylightSaving = info.IsDaylightSavingTime(localServerTime);
    

    There are further examples here