NEWS
Rechenfehler bei "Zeitstempel"
-
Sommer-/Winterzeit ist nicht.
21:19:45.650 info javascript.0 (11896) script.js.Toni.Test: 1680635985644 1680635556307 01:07:09
1680635985644 = Tue Apr 04 2023 21:19:45 GMT+0200 (Mitteleuropäische Sommerzeit)
1680635556307 = Tue Apr 04 2023 21:12:36 GMT+0200 (Mitteleuropäische Sommerzeit)Was kann es sonst sein?
-
@rtwl sagte: Was kann es sonst sein?
Die Formatierung nach "SS:mm:ss" berücksichtigt die Zeitzone, ist also für Zeitdifferenzen nicht geeignet.
Es muss um die Zeitzone korrigiert werden. -
@paul53 said in Rechenfehler bei "Zeitstempel":
Die Formatierung nach "SS:mm:ss" berücksichtigt die Zeitzone, ist also für Zeitdifferenzen nicht geeignet.
Ich habe das auch gedacht. Aber jetzt habe ich mir folgendes Script geschrieben und dieses Ergebnis erhalten:
22:04:14.572 info javascript.0 (1670) Stop script script.js.Zeitstempel 22:04:14.631 info javascript.0 (1670) Start javascript script.js.Zeitstempel 22:04:14.633 info javascript.0 (1670) script.js.Zeitstempel: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 22:04:14.633 info javascript.0 (1670) script.js.Zeitstempel: jetzt: 04.04.2023 - 22:04:14 22:04:14.633 info javascript.0 (1670) script.js.Zeitstempel: war: 20.03.2023 - 22:00:00 22:04:14.633 info javascript.0 (1670) script.js.Zeitstempel: 22:04:14 22:00:00 00:04:14
Der 20.3. war noch Winterzeit und jetzt haben wir Sommerzeit. (habs jetzt nochmal korrigiert, mit dem richtigen Jahr drin)
Das Script als ladbares XML:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="w*]R_0W0$LWQbxQQWUqR">jetzt</variable> <variable id=".tl$sA#dc}OTbnTq5%d|">war</variable> </variables> <block type="variables_set" id="ioY?^NzPWQ8lgiuVMPkP" x="588" y="13"> <field name="VAR" id="w*]R_0W0$LWQbxQQWUqR">jetzt</field> <value name="VALUE"> <block type="convert_to_date" id="%5tchnvtHf9|-p2[ZC@T"> <value name="VALUE"> <block type="procedures_callcustomreturn" id="ax7nC?-p7+8Pq;J4TMX*"> <mutation name="jetzt"></mutation> </block> </value> </block> </value> <next> <block type="debug" id="3Cq^4jL7!+cxxYZxHex6"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="Mbj!W^Jxvi@3QnX3k5lf"> <field name="TEXT">test</field> </shadow> <block type="text_join" id=";ZAwaYmmhFmPW|507[CC"> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="+a!k0thxyU~T:O]lEt_H"> <field name="TEXT">jetzt: </field> </block> </value> <value name="ADD1"> <block type="convert_from_date" id="4K~073?!A6pi/t9JiV:C"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">DD.MM.YYYY</field> <value name="VALUE"> <block type="variables_get" id="5q{$:)5=iU(cAaJ-KK3y"> <field name="VAR" id="w*]R_0W0$LWQbxQQWUqR">jetzt</field> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="!J_mo[+,Sp|+#PU|-4w{"> <field name="TEXT"> - </field> </block> </value> <value name="ADD3"> <block type="convert_from_date" id="TrWlvpP(iqUcy|/{t]Rm"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm:ss</field> <value name="VALUE"> <block type="variables_get" id="?OiD!}Hq:?v3PK#y@;mk"> <field name="VAR" id="w*]R_0W0$LWQbxQQWUqR">jetzt</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="DI`oHxII1,wYsW;os{3D"> <field name="VAR" id=".tl$sA#dc}OTbnTq5%d|">war</field> <value name="VALUE"> <block type="convert_to_date" id="im|+Y3ZPCL9;LASfLHrL"> <value name="VALUE"> <block type="procedures_callcustomreturn" id="rHwm[cy3|rK}3J@}1MfN"> <mutation name="längerHer"></mutation> </block> </value> </block> </value> <next> <block type="debug" id="`ndH:dm7nIuroeyaj#$^"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="ur=BZAd6=tQ1Yn4qk.#`"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="shDSZ+)]UzO?UO$#,X{m"> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="Gt{/$+a2J#xIOmhR=if="> <field name="TEXT">war: </field> </block> </value> <value name="ADD1"> <block type="convert_from_date" id="yBKnsOIgK%HdA]FdP15E"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">DD.MM.YYYY</field> <value name="VALUE"> <block type="variables_get" id="$]r4;cWu6`HXnatMB{wb"> <field name="VAR" id=".tl$sA#dc}OTbnTq5%d|">war</field> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="r*I2pS=vt72,lWG2EF7G"> <field name="TEXT"> - </field> </block> </value> <value name="ADD3"> <block type="convert_from_date" id="2KkZVwJoI#IVei?R^-L!"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm:ss</field> <value name="VALUE"> <block type="variables_get" id="pEXtq!-Q9NZjxJhKt6gg"> <field name="VAR" id=".tl$sA#dc}OTbnTq5%d|">war</field> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="q=f4983u8v-2q_nMShcg"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="=rgN!0Q)YcYoxx!t3Yo1"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="mu%/,Yqkkt*!ONa_V,um"> <mutation items="5"></mutation> <value name="ADD0"> <block type="convert_from_date" id="pF85)~7%Z};G5GbkQFJs"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm:ss</field> <value name="VALUE"> <block type="variables_get" id="kgNUus|CdWLV%_#zeY+5"> <field name="VAR" id="w*]R_0W0$LWQbxQQWUqR">jetzt</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text_newline" id="Fu[a=0{Ax_?C^P,Vy`b."> <field name="Type">\r\n</field> </block> </value> <value name="ADD2"> <block type="convert_from_date" id="H!Qag|*K_TSm}i;pMxPu"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm:ss</field> <value name="VALUE"> <block type="variables_get" id="fD{}WVHvqF`wM5)%J,Kx"> <field name="VAR" id=".tl$sA#dc}OTbnTq5%d|">war</field> </block> </value> </block> </value> <value name="ADD3"> <block type="text_newline" id="w(-:EI9:s+/0F;J(2*cA"> <field name="Type">\r\n</field> </block> </value> <value name="ADD4"> <block type="convert_from_date" id="[%2QKnnglrp]kJ==!w:z"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm:ss</field> <value name="VALUE"> <block type="math_arithmetic" id="}TVJhUWo`r[YN@W`,_Ay"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="}o~K{n2SYX-!(w4xu=El"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="7M}@!v=joEQ/BPH`CoA$"> <field name="VAR" id="w*]R_0W0$LWQbxQQWUqR">jetzt</field> </block> </value> <value name="B"> <shadow type="math_number" id="bpF]j=vrd9F@uLnM#z)q"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="`!+t4ze3wr,~e=L4d#8I"> <field name="VAR" id=".tl$sA#dc}OTbnTq5%d|">war</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defcustomreturn" id="X}4v~b-?M+=:~uY~YL~_" x="1288" y="63"> <mutation statements="false"></mutation> <field name="NAME">längerHer</field> <field name="SCRIPT">bGV0IGRhdGUgPSBuZXcgRGF0ZSgiMy8yMC8yMyIpOw0KZGF0ZS5zZXRIb3VycygyMik7DQpyZXR1cm4gZGF0ZTs=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomreturn" id="-@OAa%fyS:waGq{?8gLZ" x="1288" y="138"> <mutation statements="false"></mutation> <field name="NAME">jetzt</field> <field name="SCRIPT">cmV0dXJuIG5ldyBEYXRlKCk7DQo=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> </xml>
-
@gombersiob sagte: Der 20.3. war noch Winterzeit und jetzt haben wir Sommerzeit.
Der 26.3. hatte 23 Stunden.
-
@paul53
Worin liegt hier der Fehler? Die Differenz von 5 Sek wird nicht berechnet.
22:10:30.561 info javascript.0 (11896) script.js.Toni.Test: 22:10:25 22:10:30 00:00:00
-
@paul53 said in Rechenfehler bei "Zeitstempel":
Der 26.3. hatte 23 Stunden.
Ich weiß jetzt nicht, was mir das sagen soll. Die jetzige Zeit in Winterzeit umgerechnet (also mit Beachtung der Zeitzone) wäre 21:04:14 gewesen.
Der Abstand, wenn man die ganzen Tage abzieht, wären also 23:55:46 gewesen und nicht 00:00:04. -
@rtwl
dauer = ende - start (ohne Konvertierung) -
@paul53 Stimmt, danke
-
@gombersiob Bei dir ist es ja das gleiche Problem. Die Zeitumstellung wird nicht berücksichtigt. Daher hast du ja auch die eine Stunde zuviel, genauso wie es bei meinem Problem war.
klick mal auf den Link den @paul53 gepostet hat. -
@rtwl said in Rechenfehler bei "Zeitstempel":
Die Zeitumstellung wird nicht berücksichtigt.
Das bezweifle ich ja gar nicht - und das zeigt ja auch mein Beispiel. Und ich habe ja auch keine Stunde zuviel.
Aber Dein Problem ist doch, dass Du Uhrzeiten hast. 21:12 und 21:11. Der Abstand ist 1 Minute und nicht 1h1m -
Ich habs jetzt begriffen. Ich habs über die Millisekunden-Differenzen nachgerechnet und habs damit dann für mich nachvollziehen können.
Danke! -
@gombersiob said in Rechenfehler bei "Zeitstempel":
Ich habs jetzt begriffen.
Nach einer Nacht ist mir meine Begriffsstutzigkeit von gestern Abend regelrecht peinlich. Insbesondere, weil mir das Datumsformat eigentlich kein Fremdwort ist. Irgendwie war ich völlig auf dem falschen Dampfer. Ich warte auf den Tag, wo ich auf einen Enkeltrick reinfalle.
Ich habe meine Erklärung des "Phänomens" jetzt nochmal in ein Programm gepackt:
Das Ergebnis sieht so aus:
07:52:23.805 info javascript.0 (1661) script.js.common.Testen.Zeitrechnungen2: Das interne Format des Start-Timestamps: 1680548400000 - wird für unsere Zeitzone zu dieser Darstellung formatiert: 03.04.2023 - 21:00:00 07:52:23.805 info javascript.0 (1661) script.js.common.Testen.Zeitrechnungen2: Das interne Format des Start-Timestamps: 1680634800000 - wird für unsere Zeitzone zu dieser Darstellung formatiert: 04.04.2023 - 21:00:00 07:52:23.805 info javascript.0 (1661) script.js.common.Testen.Zeitrechnungen2: Die Differenz aus beiden Daten (Ende-Start) ist die Differenz in Millisekunden: 86400000 oder in Stunden: 24 07:52:23.805 info javascript.0 (1661) script.js.common.Testen.Zeitrechnungen2: Der Versuch die Differenz als Datum darzustellen scheitert offensichtlich jenseits von UTC: 02.01.1970 - 21:00:00
-
@gombersiob die ganz letzte variable ist Ende statt Gesamt Darum hast du 21 Uhr als Ergebniss. Bei Gesamt wird diese auf 0:00 Uhr sein.
und 24 Std nach dem 1.1.1970 ist ja auch der 2. Jänner 1970 um 0:00
aber man kann ja auch eine Differenz nicht als Datum ausgeben.
-
@rtwl said in Rechenfehler bei "Zeitstempel":
die ganz letzte variable ist Ende statt Gesamt
Du hast recht - Copy&Paste. Ich wusste was rauskommen würde, darum habe ich nicht mehr richtig geschaut (war so klein geschrieben
)
Jetzt nochmal:
08:46:29.776 info javascript.0 (1661) script.js.common.Testen.Zeitrechnungen2: Das interne Format des Start-Timestamps: 1680548400000 - wird für unsere Zeitzone zu dieser Darstellung formatiert: 03.04.2023 - 21:00:00 08:46:29.777 info javascript.0 (1661) script.js.common.Testen.Zeitrechnungen2: Das interne Format des Start-Timestamps: 1680634800000 - wird für unsere Zeitzone zu dieser Darstellung formatiert: 04.04.2023 - 21:00:00 08:46:29.777 info javascript.0 (1661) script.js.common.Testen.Zeitrechnungen2: Die Differenz aus beiden Daten (Ende-Start) ist die Differenz in Millisekunden: 86400000 oder in Stunden: 24 08:46:29.777 info javascript.0 (1661) script.js.common.Testen.Zeitrechnungen2: Der Versuch die Differenz als Datum darzustellen scheitert offensichtlich jenseits von UTC: 02.01.1970 - 01:00:00
Da sieht man jetzt auch die 1 "zusätzliche" Stunde, dadurch dass sich MEZ um 1 Stunde von UTC unterscheidet.