Hallo,
Ich habe echte Probleme damit 2 unixzeiten zu überprüfen ob beide auf den selben Tag fallen.
Meine einzige Idee ist mit 0 an zu fangen, also 01.01.1970 00:00:00 und dann immer einen Tag zu ermitteln mit 1+86400. Also 1Tag = 8640 zweiter Tag dann 8640*2 und so weiter. Was denkt ihr, kann das so gehen?
Gibt es da nichts einfacheres?
Grüße
In Perl?
Ja bitte ;D
my $time1 = int(1536992634/86400);
my $time2 = int(1537048801/86400);
print $time1 . ' und ' . $time2 . "\n";
Sollte mir ja eigentlich helfen können. Macht es aber nicht. time1 ist aktuell 15.09.2018 - 08:23:54 und time2 16.09.2018 - 00:00:01 also ein nächster tag. Dennoch ergibt die Rechnung 17789 und 17789
Also selber Tag.
http://perldoc.perl.org/functions/localtime.html (http://perldoc.perl.org/functions/localtime.html)
Argument von localtime() ist die Unix-Zeit in Sekunden seit der Epoche.
Zitat von: CoolTux am 15 September 2018, 08:30:15
Sollte mir ja eigentlich helfen können. Macht es aber nicht. time1 ist aktuell 15.09.2018 - 08:23:54 und time2 16.09.2018 - 00:00:01 also ein nächster tag. Dennoch ergibt die Rechnung 17789 und 17789
Also selber Tag.
Zeitzonenproblem? Unix-Zeit sind Sekunden seit der Epoche in UTC.
ich nehme mir erstmal nur die Zeiten von hier
https://www.unixtime.de/
Scheint aber in der Tat so zu sein. Dann muß ich mal mit den Zeiten schauen die ich von meinem Modul bekomme. Meine Rechnung scheint erstmal so zu gehen. Danke Boris für den Denkanstoß
Ich bekomme ne Kriese.
my $unixtime = 1537032420;
my $oldunixtime = 1537032360;
print "plus 86400 \n"
unless( ($unixtime > ($oldunixtime + 900) or $unixtime == $oldunixtime) and int(gettimeofday() / 86400) == int($unixtime / 86400) );
print int(gettimeofday() / 86400) . "\n";
print int($unixtime / 86400) . "\n";
Ausgabe
plus 86400
17789
17789
Wieso sieht unless den and Teil ans Wahr an wo er doch unwahr sein sollte.
Es ist noch früh, aber ich sehe folgendes:
Unixtime ist größer als oldunixtime . Darauf prüfst Du und es kommt true heraus.
Das oder brauchen wir jetzt nicht mehr betrachten.
Im Und Teil lässt zu prüfen, ob bei der Division durch 86400 die gleiche Ganzzahl heraus kommt. Solange beide Parameter (unixtime und gettimeofday) das gleiche Ergebnis bei der Division geben kommt true heraus.
Grüße Sidey
Gesendet von meinem XT1650 mit Tapatalk
Ich hätte da noch eine nicht von mir getestete dee:
Wenn das Datum ISO-8601 in einer Variable entspricht (YYYY-MM-DD), dann kannst Du mit gt oder lt Operatoren gegen eine weitere Variable vergleichen.
Ich glaube, das reduziert die Komplexität enorm.
Gruß Sidey
Gesendet von meinem XT1650 mit Tapatalk
Hallo,
Vielen Dank für die guten Tipps und Sichtweisen. Ich habe nun eine für mich annehmbare Möglichkeit gefunden um meine beobachteten Situationen abfangen zu können.
Hoffe ich ;D
Ich wünsche Euch einen erholsames Wochenende.
Grüße