Contact details

Martin Schaefer

Email martin@mschaefer.nl
Tel +31(0)6-206 19916

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
This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at nsftools.com.