Autor Thema: 2 unixzeiten vergleichen ob sie den selbigen Tag haben  (Gelesen 293 mal)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16677
2 unixzeiten vergleichen ob sie den selbigen Tag haben
« am: 15 September 2018, 07:50:21 »
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
« Letzte Änderung: 15 September 2018, 08:17:49 von CoolTux »
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4289
Antw:2 unixzeiten vergleichen ob sie den selbigen Tag haben
« Antwort #1 am: 15 September 2018, 08:00:39 »
In Perl?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16677
Antw:2 unixzeiten vergleichen ob sie den selbigen Tag haben
« Antwort #2 am: 15 September 2018, 08:16:17 »
Ja bitte  ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16677
Antw:2 unixzeiten vergleichen ob sie den selbigen Tag haben
« Antwort #3 am: 15 September 2018, 08:30:15 »
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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4289
Antw:2 unixzeiten vergleichen ob sie den selbigen Tag haben
« Antwort #4 am: 15 September 2018, 08:33:26 »
http://perldoc.perl.org/functions/localtime.html

Argument von localtime() ist die Unix-Zeit in Sekunden seit der Epoche.

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4289
Antw:2 unixzeiten vergleichen ob sie den selbigen Tag haben
« Antwort #5 am: 15 September 2018, 08:34:57 »
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.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16677
Antw:2 unixzeiten vergleichen ob sie den selbigen Tag haben
« Antwort #6 am: 15 September 2018, 08:44:46 »
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ß
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16677
Antw:2 unixzeiten vergleichen ob sie den selbigen Tag haben
« Antwort #7 am: 15 September 2018, 09:25:31 »
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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2091
Antw:2 unixzeiten vergleichen ob sie den selbigen Tag haben
« Antwort #8 am: 15 September 2018, 09:50:38 »
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

Signalduino, HMLan, Raspberry Pi, Mysensors, ArduinoSensor

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2091
Antw:2 unixzeiten vergleichen ob sie den selbigen Tag haben
« Antwort #9 am: 15 September 2018, 09:56:37 »
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

Signalduino, HMLan, Raspberry Pi, Mysensors, ArduinoSensor

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16677
Antw:2 unixzeiten vergleichen ob sie den selbigen Tag haben
« Antwort #10 am: 15 September 2018, 10:39:42 »
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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

 

decade-submarginal