I think there is a bug in the GXDateTime contructor, that takes a DateTime and a TimZoneInfo parameter.
This one:
public GXDateTime(DateTime value, TimeZoneInfo timeZone)
If I send in a DateTime/value that has the .Kind = Unspecified, and a TimeZoneInfo/timeZone not using DST, the "Status" property will be set to ClockStatus.DaylightSavingActive, as my pc is running in local norwegian timezone (with DST).
The reason for this, is that at the bottom of the constructor, you have an "If" statement where you are calling "IsDaylightSavingTime" of the "value" parameter, instead of the "timeZone" parameter.
Doing this introduces the local (pc) timezone, that should not be involved when giving the "timeZone" parameter explicit.
See attached image for what I think will be a more correct implementation.
[EDIT] I now see that my change is too simple, as "timeZone" parameter can be NULL, but it illustrates what I think the implementation should be for value with Kind=Unspecified.
Hi Karl,
Hi Karl,
Thank you for pointing this out. I believe that you are right about this. This is fixed for the next release like this:
if ((timeZone == null && value.IsDaylightSavingTime()) || (timeZone != null && timeZone.IsDaylightSavingTime(value)))
{
Status |= ClockStatus.DaylightSavingActive;
}
BR,
Mikko
Big thanks Mikko!
Big thanks Mikko!