Ciao a tutti,
ho un problema : da quando siamo passati all'ora solare la mia conversione da ticks a data formattata è rimasto alla vecchia ora (fa un ora in piu'), oggi ho provato ad usare
B4X:
Log(DateTime.GetTimeZoneOffsetAt(DateTime.Now))
ma mi restituisce 2, io mi aspettavo 1 ora che c'è l'ora solare e 2 quando c'era l'ora legale...
Public Sub formattaOra(timestamp As String) As String
Dim Ora As Long
Dim dt As String
Ora = timestamp
DateTime.DateFormat = "dd/MM/yy"
DateTime.TimeFormat = "HH:mm:ss"
dt = DateTime.Date(Ora) & " " & DateTime.Time(Ora)
Return dt
End Sub
e fino all'altra settimana tutto ok, da ieri è rimasto all'ora legale e provando a vedere quello che c'è in giro ho trovato una funzione scritta da erel :
B4X:
Sub IsDaylightInEffect As Boolean
Dim currentTimezone As Double = DateTime.TimeZoneOffset
Dim t As Long = DateTime.Now
For i = 0 To 11 Step 2
If DateTime.GetTimeZoneOffsetAt(t) < currentTimezone Then Return True
t = t + i * DateTime.TicksPerDay * 30
Next
Return False
End Sub
però da lo stesso risultato sia oggi che guardando un giorno di una settimana indietro
DateUtils is a code module with a set of useful date and time related methods. It complements DateTime api, it doesn't replace it. The methods included in DateUtils: 'Calculates the period between two date instances. 'This method returns a Period type with years, months, days, hours, minutes...
DateTime.DateFormat = "dd-MMM-yyyy HH:mm:ss z"
Dim Now As Long = DateTime.Now
Log(DateTime.Date(Now))
Dim t As Long = DateTime.Dateparse("25-mar-2018 02:01:22" & " GMT")
Log($"$DateTime{t}"$)