Nederlandse tijd en datum opvragen op buitenlandse server
Stel je wilt de Nederlandse tijd en datum weergeven onafhankelijk van het systeem waar je software op draait. Onderstaande class “nlDateTime” biedt dan een oplossing. De code houd rekening met DST (Daylight Saving Time = zomertijd).
In feite wordt de door het systeem geretourneerde tijd eerst omgezet naar UTC (Universal Time Coordinated) ook wel GMT genaamd. Vervolgens wordt er vastgesteld of we in europese zomertijd of wintertijd leven. Zomertijd gaat in op de laatste zondag van maart. Wintertijd gaat in op de laatste zondag van oktober.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
using System; using System.Text; namespace PageGrabber.BusinessLogic { public abstract class nlDateTime { /// /// Returns dutch datetime. Checking DST also. /// public static DateTime Now { get { DateTime DateTimeNow = DateTime.Now; DateTime DateTimeNowUTC = DateTimeNow.ToUniversalTime(); DateTime result; if (IsSummerTime(DateTimeNowUTC)) result = DateTimeNowUTC.AddHours(2); else result = DateTimeNowUTC.AddHours(1); //Convert from utc to local return new DateTime(result.Year, result.Month, result.Day, result.Hour, result.Minute, result.Second, result.Millisecond, DateTimeKind.Local); } } public static DateTime StartOfEUSummerTimeUtc(int Year) { int Day = (31 - (((5 * Year) / 4) + 4) % 7); return new DateTime(Year, 3, Day, 1, 0, 0, 0, DateTimeKind.Utc); } public static DateTime EndOfEUSummerTimeUtc(int Year) { int Day = (31 - (((5 * Year) / 4) + 1) % 7); return new DateTime(Year, 10, Day, 1, 0, 0, 0, DateTimeKind.Utc); } public static bool IsSummerTime(DateTime DateTimeUtc) { if (DateTimeUtc >= StartOfEUSummerTimeUtc(DateTimeUtc.Year) && DateTimeUtc < EndOfEUSummerTimeUtc(DateTimeUtc.Year)) return true; else return false; } } } |