tag:forum.selfhtml.org,2005:/selfAngular8 UTC Datum als UTC erkennen – SELFHTML-Forum2020-02-05T16:08:47Zhttps://forum.selfhtml.org/self/2020/feb/04/angular8-utc-datum-als-utc-erkennen/1764435#m1764435hmm2020-02-04T07:45:41Z2020-02-04T09:53:00ZAngular8 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#m1764436JürgenBhttps://www.j-berkemeier.de2020-02-04T08:05:46Z2020-02-04T08:05:46ZAngular8 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#m1764442Auge2020-02-04T09:22:16Z2020-02-04T09:22:16ZAngular8 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#m1764460dedlfix2020-02-04T10:29:47Z2020-02-04T10:29:47ZAngular8 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#m1764491hmm2020-02-04T15:24:19Z2020-02-04T15:24:19ZAngular8 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#m1764437hmm2020-02-04T08:23:39Z2020-02-04T08:23:39ZAngular8 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#m1764439JürgenBhttps://www.j-berkemeier.de2020-02-04T08:55:06Z2020-02-04T08:55:06ZAngular8 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#m1764440JürgenBhttps://www.j-berkemeier.de2020-02-04T09:04:50Z2020-02-04T09:04:50ZAngular8 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#m1764446hmm2020-02-04T09:29:04Z2020-02-04T09:29:04ZAngular8 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#m1764452hmm2020-02-04T09:51:26Z2020-02-04T09:51:26ZAngular8 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#m1764458Auge2020-02-04T10:15:10Z2020-02-04T10:15:10ZAngular8 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#m1764459Gunnar Bittersmannselfhtml@bittersmann.dehttps://bittersmann.de2020-02-04T10:15:42Z2020-02-04T10:31:46ZAngular8 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#m1764453hmm2020-02-04T09:53:49Z2020-02-04T09:53:49ZAngular8 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#m1764494Auge2020-02-04T15:33:33Z2020-02-04T15:33:33ZAngular8 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#m1764498Gunnar Bittersmannselfhtml@bittersmann.dehttps://bittersmann.de2020-02-04T15:51:45Z2020-02-04T15:52:40ZAngular8 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#m1764510JürgenBhttps://www.j-berkemeier.de2020-02-04T16:31:19Z2020-02-04T16:31:19ZAngular8 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#m1764571hmm2020-02-05T16:08:47Z2020-02-05T16:08:47ZAngular8 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>