Lotusscript snippet: Javascript timestamp naar een lotusscript date time waarde
woensdag, 14 juli 2010 door Martin Schaefer
Tijdens een project waar we in Google Maps de tijd en lokatie van bepaalde items projecteren kwam ik even vast te zitten. Het ging om het omzetten van een Javascript timestamp naar een Lotusscript variabele.
Enkele uitgangspunten:
- Javascript timestamps worden geteld in seconden sinds 1 januari 1970.
- Lotusscript timestamps worden geteld in seconden sinds 31 december 1899
- De timestamps zijn altijd in de GMT tijdzone
Tijdens mijn zoektocht kon ik nergens een goed voorbeeld script vinden, daarom plaats ik de functie hier. Voor de meeste mensen waarschijnlijk gesneden koek, maar ik was er toch langer mee bezig dan gedacht. Niet vreemd met Nederland - Spanje op de achtergrond op de radio.
De code performance puristen onder ons zullen de Datenumber (1970,1,1) nog willen vervangen door een constante. Be my guest.
Function JSTimeStampToLSDateTime ( dblJSEpochValue_IN As Double ) As Variant
Const SECONDS_PER_DAY = 86400
Dim dblSecondsSinceEpoch As Double
Dim dtGMTDateTime As Variant
Dim intAddZoneHours As Integer
Dim ndt As NotesDateTime
dblSecondsSinceEpoch = dblJSEpochValue_IN + ( Cdbl( Datenumber(1970,1,1) ) * SECONDS_PER_DAY ) ' 86400 is het aantal seconden in een dag
dtGMTDateTime = Cdat( dblSecondsSinceEpoch / SECONDS_PER_DAY ) ' en weer terug rekenen naar LS/VB
Set ndt = New NotesDateTime ( dtGMTDateTime )
intAddZoneHours = -Val( ndt.TimeZone ) + Abs( ndt.IsDST) ' met -Val zorgen we er voor dat -2 wordt 2 en 2 wordt -2, Abs van een boolean = 1 of 0
Call ndt.AdjustHour ( intAddZoneHours ) ' verplaats de datum/tijd naar de juiste tijdzone inclusief zomertijd
JSTimeStampToLSDateTime = ndt.Lslocaltime
End Function
provided by Julian Robichaux at nsftools.com.