Skip to content

Instantly share code, notes, and snippets.

@SchreiberLars
Last active October 28, 2019 13:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SchreiberLars/120413dda455cb06b3ed14f4d4ab9c75 to your computer and use it in GitHub Desktop.
Save SchreiberLars/120413dda455cb06b3ed14f4d4ab9c75 to your computer and use it in GitHub Desktop.
(DateTimeUTC as datetime) as datetime =>
let
/*
================================================================================
Wesentliche Bestandteile der Funktion basieren auf der Arbeit von 'Frank Tonsen'
================================================================================
*/
Year = Date.Year(DateTimeUTC),
//Ermittlung der Grenze der Winterzeit --> letzter Sonntags im März, 00:59:59 Uhr UTC
StartSommerzeit = #datetime(Year, 3, 31, 0, 0, 0) - #duration((Date.DayOfWeek(#date(Year, 3, 31), Day.Sunday)), -1, 0, 0),
//Ermittlung der Grenze der Sommerzeit --> letzter Sonntags im März, 00:59:59 Uhr UTC
EndSommerzeit = #datetime(Year, 10, 31, 0, 0, 0) - #duration((Date.DayOfWeek(#date(Year, 10, 31), Day.Sunday)), -1, 0, 0),
/*
Berechnung Zeitverschiebung:
*/
OffsetToLocal = if DateTimeUTC > StartSommerzeit and DateTimeUTC <= EndSommerzeit then 2 else 1,
//Umrechnung UTC in lokale Zeit
Output = DateTimeUTC + #duration(0,OffsetToLocal,0,0)
in
Output
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment