WinCC Unified Archiv als *.csv - unerwartetes Ergebnis beim Auslesen

Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es dafür eine fertige Javascrpt-Methode oder kann man dafür getTimezoneOffset() verwenden? Ich weiß jetzt nicht, ob getTimezoneOffset() den zum Datum passenden Offset liefert oder den gerade aktiven Offset. Das müsste man ausprobieren. Wenn das hier niemand weiß, dann kanst du ja wieder im Siemens-Forum oder den Siemens Support fragen.
Daran hatte ich auch schon gedacht, bzw, damit einen Test gemacht. Allerdings mache ich da wohl irgendetwas falsch, denn wenn ich
Javascript:
getTimezoneOffset()
verwende, werde mir keine Werte mehr ausgelesen. Da werde ich wohl noch etwas experimentieren müssen.....
 
Versuche mal
Javascript:
loggedTag.TimeStamp.setTime(loggedTag.TimeStamp.getTime() - loggedTag.TimeStamp.getTimezoneOffset() * 60 * 1000));
csvData += LoggTag.Name + delimiter + loggedTag.TimeStamp.toString() + delimiter + loggedTag.Value + delimiter + loggedTag.Quality + "\n";
oder besser nicht direkt loggedTag.TimeStamp manipulieren, sondern über ein zweites Date-Objekt gehen:
Javascript:
const Locale = new Date(loggedTag.TimeStamp.getTime() - loggedTag.TimeStamp.getTimezoneOffset() * 60 * 1000));
csvData += LoggTag.Name + delimiter + Locale.toString() + delimiter + loggedTag.Value + delimiter + loggedTag.Quality + "\n";
Oder anstatt toString() die Methode toLocaleString() verwenden? Hmm, eigentlich sollte toString() aber schon Lokalzeit liefern??? :unsure:
siehe JavaScript Date object, da wird auch was zu Timezones erklärt
PS: siehe auch getTimezoneOffset(), da sind auch Programmbeispiele
 
Zuletzt bearbeitet:
Vielleicht mache ich auch etwas verkehrt, wenn ich loggedTag.TimeStamp.toString() beim Export eines Archives in ein csv-File verwende, steht bei mir die UTC-Zeit in der Tabelle. Der Zeitstempel beim Schreiben der Werte ist ja auch UTC, ohne weiteren Parameter kann toString() die Differenz zwischen TUC und Lokalzeit gar nicht wissen oder liege ich da falsch?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wenn ich loggedTag.TimeStamp.toString() beim Export eines Archives in ein csv-File verwende, steht bei mir die UTC-Zeit in der Tabelle. Der Zeitstempel beim Schreiben der Werte ist ja auch UTC
tja, ich weiß nicht, was die toString()-Doku genau meint mit "interpreted in the local timezone". Immerhin steht da "interpreted" und nicht "converted". Das lässt Spielräume. Und Doku kann auch mal falsch sein, z.B. Siemens-Doku seit TIA ;)
Aber egal, dann rechne einfach den TimezoneOffset dazu, und aus der UTC-Zeit wird Lokalzeit.
Oder nimm die Methode toLocaleString(), die kann man umfangreich wie gewünscht parametrieren (Zeitstring-Format, Zeitzone).

ohne weiteren Parameter kann toString() die Differenz zwischen TUC und Lokalzeit gar nicht wissen oder liege ich da falsch?
Das Javascript Date-Objekt kennt die Zeitdifferenz der Laufzeit-Umgebung zu UTC.
 
Zurück
Oben