tag:forum.selfhtml.org,2005:/self Angular8 UTC Datum als UTC erkennen – SELFHTML-Forum 2020-02-05T16:08:47Z https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764435#m1764435 hmm 2020-02-04T07:45:41Z 2020-02-04T09:53:00Z Angular8 UTC Datum als UTC erkennen <p>Hi,</p> <p>in meiner App werden Zeiten in UTC eingegeben.</p> <p>Zu dieser Zeit müsste ich eine Stunde dazu addieren und dann die Millisecunden ab 1970 berechnen.</p> <p>Wie mache ich das in Angilar?</p> <p>Mein Problem ist, dass der eingegebene String bei new Date(string) als MEZ interpretiert wird.</p> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764436#m1764436 JürgenB https://www.j-berkemeier.de 2020-02-04T08:05:46Z 2020-02-04T08:05:46Z Angular8 UTC Datum als UTC erkennen <p>Hallo,</p> <p>gibt es Angular keine UTC-Methoden?</p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764442#m1764442 Auge 2020-02-04T09:22:16Z 2020-02-04T09:22:16Z Angular8 UTC Datum als UTC erkennen <p>Hallo</p> <blockquote> <p>in meiner App werden Zeiten in UTC eingegeben.</p> <p>Zu dieser Zeit müsste ich eine Stunde dazu addieren und dann die Millisecunden ab 1970 berechnen.</p> </blockquote> <p>Mal abgesehen vom Umrechnungsgedöns liegt hier mutmaßlich ein Logikfehler vor. Mit „Millisecunden ab 1970“ ist der Unix-Timestamp, wie in JavaScript üblich, in Millisekunden gemeint? Wenn ja, dann ist dieser Wert von sich aus UTC-/GMT-basiert. Eine Umrechnung einer UTC-basierten Zeit in die MEZ (+1 Stunde) [^1] und eine nachfolgende Umrechnung in den Timestamp, so, wie du sie selbst beschreibst, ist somit unnötig.</p> <p>Tschö, Auge</p> <div class="signature">-- <br> Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.<br> <em>Hohle Köpfe</em> von Terry Pratchett </div> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764460#m1764460 dedlfix 2020-02-04T10:29:47Z 2020-02-04T10:29:47Z Angular8 UTC Datum als UTC erkennen <p>Tach!</p> <blockquote> <p>Wie mache ich das in Angilar?</p> </blockquote> <p>Angular hat mit Zeitberechnungen nichts am Hut. Das musst du mit dem Date-Objekt von Javascript tun, das ist dafür ausreichend. Angular kommt erst dann wieder ins Spiel, wenn du ein Datum ausgeben möchtest, und dafür die <a href="https://angular.io/api/common/DatePipe" rel="nofollow noopener noreferrer">DatePipe</a> verwendest.</p> <p>dedlfix.</p> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764491#m1764491 hmm 2020-02-04T15:24:19Z 2020-02-04T15:24:19Z Angular8 UTC Datum als UTC erkennen <p>danke, ich bin jetzt so durchgekommen:</p> <pre><code class="block"> validDate(calendar, stunde, minute) { var eingabe = new Date(this.calendar); eingabe.setHours(stunde); eingabe.setMinutes(minute); var heute = new Date(); heute.setHours(heute.getHours() + 1); heute.setMinutes(0); heute.setSeconds(0); var heuteUtcNr = Date.parse(heute.toUTCString()); var eingabeNr = Date.parse(eingabe.toUTCString()); return (heuteUtcNr <= eingabeNr); } </code></pre> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764437#m1764437 hmm 2020-02-04T08:23:39Z 2020-02-04T08:23:39Z Angular8 UTC Datum als UTC erkennen <p>Leider konnte ich keine passende finden die aus einem String einen UTC String macht.</p> <p>mein aktueller versuch ist:</p> <pre><code class="block"> validDate(calendar, stunde) { var eingabeUtc = new Date(this.calendar); eingabeUtc.setHours(stunde); var heute = new Date(); heute.setHours(heute.getHours() + 1); var heuteUtcNr = Date.parse(heute.toUTCString()); var eingabeNr = Date.parse(eingabeUtc.toLocaleString()); console.log(heute.toUTCString() + " < " + eingabeUtc.toLocaleString()); return (heuteUtcNr < eingabeNr); } </code></pre> <p>output ist zb: Tue, 04 Feb 2020 09:20:33 GMT < 4.2.2020, 7:00:00</p> <p>Was leider als true angezeigt wird, ich vermute wegen dem GMT in Date.parse</p> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764439#m1764439 JürgenB https://www.j-berkemeier.de 2020-02-04T08:55:06Z 2020-02-04T08:55:06Z Angular8 UTC Datum als UTC erkennen <p>Hallo,</p> <p>hast du mal <a href="https://wiki.selfhtml.org/wiki/JavaScript/Objekte/Date/UTC" rel="nofollow noopener noreferrer">Date.UTC</a> ausprobiert?</p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764440#m1764440 JürgenB https://www.j-berkemeier.de 2020-02-04T09:04:50Z 2020-02-04T09:04:50Z Angular8 UTC Datum als UTC erkennen <p>Hallo nochmal,</p> <p>die Methode <a href="https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString" rel="nofollow noopener noreferrer">toLocaleString</a> hat noch zwei Übergabeparameter. Das kann dann auch so aussehen:</p> <pre><code class="block language-javascript"><span class="token function">toLocaleString</span><span class="token punctuation">(</span><span class="token string">'en-EN'</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token literal-property property">timeZone</span><span class="token operator">:</span><span class="token string">'UTC'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">toLocaleString</span><span class="token punctuation">(</span><span class="token string">'de-DE'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">...</span> </code></pre> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764446#m1764446 hmm 2020-02-04T09:29:04Z 2020-02-04T09:29:04Z Angular8 UTC Datum als UTC erkennen <p>wenn ich eine eingabe habe die als UTC gemeint ist zb 01.01.2000 10:00 Uhr</p> <p>und diese leider als MEZ String gespeichert wird. Dann habe ich das problem, dass mit 1-2 Stunden fehlen oder? Wie kann ich das ändern?</p> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764452#m1764452 hmm 2020-02-04T09:51:26Z 2020-02-04T09:51:26Z Angular8 UTC Datum als UTC erkennen <p>das hier ist immernoch eine stunde zuviel:</p> <pre><code class="block"> var eingabeUtc = new Date("04.02.2020"); eingabeUtc.setHours("11"); var heute = new Date(); heute.setHours(heute.getHours() + 1); heute.setMinutes(0); heute.setSeconds(0); var heuteUtcNr = Date.parse(heute.toUTCString()); var eingabeNr = Date.parse(eingabeUtc.toLocaleString()); console.log(heute + " < " + eingabeUtc.toLocaleString()); console.log(heuteUtcNr + " <= " + eingabeNr); console.log(heuteUtcNr <= eingabeNr); </code></pre> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764458#m1764458 Auge 2020-02-04T10:15:10Z 2020-02-04T10:15:10Z Angular8 UTC Datum als UTC erkennen <p>Hallo</p> <blockquote> <p>wenn ich eine eingabe habe die als UTC gemeint ist zb 01.01.2000 10:00 Uhr und diese leider als MEZ String gespeichert wird. Dann habe ich das problem, dass mit 1-2 Stunden fehlen oder?</p> </blockquote> <p>Ja, das ist so. Aber davon war bisher nicht die Rede.</p> <p>Du schriebst <a href="https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764435#m1764435" rel="noopener noreferrer">im Eröffnungsposting</a>:</p> <blockquote> <blockquote> <p><em>„in meiner App werden Zeiten in UTC eingegeben.“</em></p> </blockquote> </blockquote> <p>Demnach bin ich davon ausgegangen, dass diese Werte auch so (als UTC) gespeichert werden.</p> <p>Fakt ist jedenfalls, dass der Unix-Timestamp, auch wenn es sich um die in JS übliche Entsprechung in Millisekunden handelt, die Zeit seit dem 01.01.1970 00:00:00 UTC hochzählt. Nicht in MEZ oder irgendeiner anderen Zeitzone. Deine Beschreibung, einen UTC-Wert in MEZ umzurechnen, um daraus den Zeitstempel abzuleiten, ist jedenfalls mindestens irreführend.</p> <p>Tschö, Auge</p> <div class="signature">-- <br> Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.<br> <em>Hohle Köpfe</em> von Terry Pratchett </div> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764459#m1764459 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2020-02-04T10:15:42Z 2020-02-04T10:31:46Z Angular8 UTC Datum als UTC erkennen <p>@@hmm</p> <blockquote> <p>wenn ich eine eingabe habe die als UTC gemeint ist zb 01.01.2000 10:00 Uhr</p> </blockquote> <p>Mit „Eingabe“ meinst du Eingabefelder für Datum und Uhrzeit?</p> <blockquote> <p>und diese leider als MEZ String gespeichert wird.</p> </blockquote> <p>Ja, <code>new Date('2020-02-04 11:00')</code> wertet die Zeit in lokaler Zeitzone, bei Locale mit MEZ kommt in UTC 2020-02-04T10:00Z heraus.</p> <p>☞ erstes und zweites Formular im <a href="https://codepen.io/gunnarbittersmann/pen/oNXvxZQ?editors=0010" rel="noopener noreferrer">Pen</a></p> <blockquote> <p>Dann habe ich das problem, dass mit 1-2 Stunden fehlen oder? Wie kann ich das ändern?</p> </blockquote> <p>Indem du sofort bei der Eingabe die Uhrzeit schon als UTC wertest. Wie Jürgen schon sagte, ist <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC" rel="nofollow noopener noreferrer"><code class="language-js">Date<span class="token punctuation">.</span><span class="token constant">UTC</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code></a> dabei hilfreich.</p> <p>☞ drittes Formular im <a href="https://codepen.io/gunnarbittersmann/pen/oNXvxZQ?editors=0010" rel="noopener noreferrer">Pen</a></p> <p>LLAP </p> <div class="signature">-- <br> <em>„Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“<br> „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“</em><br> —Marc-Uwe Kling </div> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764453#m1764453 hmm 2020-02-04T09:53:49Z 2020-02-04T09:53:49Z Angular8 UTC Datum als UTC erkennen <p>ne irgendwie funktioniert das nicht...</p> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764494#m1764494 Auge 2020-02-04T15:33:33Z 2020-02-04T15:33:33Z Angular8 UTC Datum als UTC erkennen <p>Hallo</p> <blockquote> <p>danke, ich bin jetzt so durchgekommen:</p> <pre><code class="block"> validDate(calendar, stunde, minute) { var eingabe = new Date(this.calendar); eingabe.setHours(stunde); eingabe.setMinutes(minute); var heute = new Date(); heute.setHours(heute.getHours() + 1); heute.setMinutes(0); heute.setSeconds(0); var heuteUtcNr = Date.parse(heute.toUTCString()); var eingabeNr = Date.parse(eingabe.toUTCString()); return (heuteUtcNr <= eingabeNr); } </code></pre> </blockquote> <p>Du erstellst eine UTC-Zeitangabe, addierst eine Stunde und wandelst diese Angabe wieder in eine UTC-Zeitangabe um? Kommt mir komisch vor. Zudem, während der Laufzeit der Sommerzeit änderst du die Funktion in <code>heute.setHours(heute.getHours() + 2);</code>?</p> <p>Tschö, Auge</p> <div class="signature">-- <br> Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.<br> <em>Hohle Köpfe</em> von Terry Pratchett </div> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764498#m1764498 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2020-02-04T15:51:45Z 2020-02-04T15:52:40Z Angular8 UTC Datum als UTC erkennen <p>@@hmm</p> <blockquote> <p>danke, ich bin jetzt so durchgekommen:</p> </blockquote> <p>Mit Betonung auf <strong>„jetzt“‽</strong></p> <blockquote> <pre><code class="block bad language-js"> heute<span class="token punctuation">.</span><span class="token function">setHours</span><span class="token punctuation">(</span>heute<span class="token punctuation">.</span><span class="token function">getHours</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> </blockquote> <p>Und ab Ende März funktioniert der Kram nicht mehr und du fragst wieder hier im Forum nach, was du denn falsch gemacht hast?</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“<br> „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“</em><br> —Marc-Uwe Kling </div> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764510#m1764510 JürgenB https://www.j-berkemeier.de 2020-02-04T16:31:19Z 2020-02-04T16:31:19Z Angular8 UTC Datum als UTC erkennen <p>Hallo,</p> <p>was ist mit den UTC-Methoden? Sind die für deinem Fall nicht geeignet?</p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764571#m1764571 hmm 2020-02-05T16:08:47Z 2020-02-05T16:08:47Z Angular8 UTC Datum als UTC erkennen <p>hatte ich oben angesprochen:</p> <p>das gehtHours + 1 hat nichts mit UTC zutun. Da geht und darum, dass kein Wert eingebenen werden soll, der größer ist als die aktuelle Uhrzeit auf Stunden aufgerundet.</p>