• Willkommen im Forum „Wetterstationsforum.info - Archiv“.
 

Neuigkeiten:

Dieses Forum dient ausschließlich zu Archivzwecken.
Für Fragen nutze bitte unser aktuelles Forum, welches du unter https://wetterstationsforum.info findest.

Hauptmenü

benötige PHP Hilfe bezüglich Timestamp

Begonnen von Wetterfrosch1971, 02.03.2017, 05:31:45

⏪ vorheriges - nächstes ⏩

Wetterfrosch1971

Hallo,

stehe gerade mal wieder vor einem kleinen PHP-Problem und benötige dabei Hilfe eines PHP-Kenners.

folgender Code:


$heute = strtotime(date('d-m-Y');


damit gebe ich das aktuelle Datum als Timestamp aus.

gibt es nun eine Möglichkeit, dass sich dieser Timestamp nicht um Mitternacht ändert, sondern z.b. erste 1 Minute nach Mitternacht?

kann ich das eventuell so lösen:


$zeit = time();
$zeitKorrektur = $zeit - 60;
$heute = strtotime(date('d-m-Y', $zeitKorrektur));


Vielen Dank für die Infos.
Gruß Frank

WernerWetter

Ich mach es so:
date('Y-m-d 00:00:01') für eine Sekunde nach Mitternacht,

für eine Minute wäre es dann so:
date('Y-m-d 00:01:00')


Edit: wobei Du die Reihenfolge der Y-m-d noch anpassen musst...

Wetterfrosch1971

#2
hallo Werner,

müsste das dann bei mir so aussehen:


$heute = strtotime(date('d-m-Y 00:01:00'));


?

glaube da ist was falsch verstanden worden , denn wenn ich den Code so wie oben nun eingebe, wird der Timestamp einfach um 1 Minute vergrößert, also es passiert das Gleiche wie wenn ich zu $heute einfach 60 Sekunden dazu addiere.

ohne die 1 Minute
$heute = 1488409200

mit der 1 Minute aus deinem Script
$heute = 1488409260

ich benötige jedoch einfach die Möglichkeit, dass der Timestamp für das Datum, sich nicht um Mitternacht ändert, sondern einfach eine  Minute nach Mitternacht, d.h. würde das Script um Mitternacht aufgerufen, sollte der Timestamp noch die Datumsangabe des Vortages enthalten und erst 1 Minute nach Mitternacht auf den neuen Tag umspringen.

Ich benötige das einfach dafür, da der Timestamp bei mir eine Funktion steuert, die sicherheitshalber erst 1 Minute nach Mitternacht ausgeführt werden soll, da es passieren kann, wenn sie exakt um Mitternacht durchgeführt wird, eventuell zu falsch übernommenen Werten kommt, da eventuell die eine Uhr des einen Systems noch nicht den Datumswechsel vollzogen hat.

bzw. ich sehe gerade, ich bin das Problem eventuell einfach nur falsch angegangen, muss ich mein Problem eventuell einfach über eine if/else Bedingung lösen, in der ich den aktuellen Timestamp inkl. Uhrzeit mit dem Datums-Timestamp aus deinem Code vergleiche und erst wenn der aktuelle Timestamp größer dem Datums-Timestamp +1 Minute ist, wird die Bedingung ausgeführt?

würde dann so aussehen:


$time = time();
$heute = strtotime(date('d-m-Y 00:01:00'));
if ($time > $heute)


Kann ich das so lösen ?

Danke für die Info.
Gruß Frank

WernerWetter

Sorry Frank,

jetzt erst lese ich richtig: "strtotime". Du wandelst einen String in einen Unix Timestamp um.

ZitatIch benötige jedoch einfach die Möglichkeit, dass der Timestamp für das Datum, sich nicht um Mitternacht ändert, sondern einfach eine  Minute nach Mitternacht, d.h. würde das Script um Mitternacht aufgerufen, sollte der Timestamp noch die Datumsangabe des Vortages enthalten und erst 1 Minute nach Mitternacht auf den neuen Tag umspringen.

Zieh doch einfach vom Timestamp 60 (Sekunden) ab. Dann liegt der Timestamp eine Minute in der Vergangenheit.
$heute = strtotime(date('d-m-Y'))-60;

MfG
Werner   

Wetterfrosch1971

#4
OK, das müsste auch gehen, jedoch müsste ich dennoch immer die obig genannte if/else-Bedingung einbauen und den datums-timestamp -60 Sekunden mit dem aktuellen timestamp vergleichen, somit kann ich es auch so belassen wie oben beschrieben.

Ich versuchs mal zu erklären wofür ich den Timestamp benötige:

Ich habe ein file, dass immer nur einmal nach Datumswechsel beschrieben werden darf.
Dazu lese ich mit filemtime das Datum dieses Files aus und vergleiche das file-Datum mit dem aktuellen Datum aus dem timestamp.
Um Mitternacht wechselt ja dann das Datum im unix- timepstamp und dann ist ja der timestamp > filetime und somit wird das file (beim Aufruf der Webseite startet das Script) neu beschrieben.
Ruft jetzt jedoch jemand meine Webseite exakt um Mitternacht auf wird somit dieses script abgerufen und somit kann es sein, dass eventuell das Datum in meiner Wettersoftware noch nicht gewechselt hat, jedoch der timestamp schon das Datum gewechselt hat und somit werden falsche Daten übernommen.
Deswegen wollte ich einfach, dass der Datumswechsel im timestamp einfach um 1 Minute verzögert wird, so dass dieses Script frühstens 1 Minute nach Mitternacht abläuft.

Ich denke aber, mit meiner if/else Bedingung die ich oben schrieb, müsste das funktionieren, hab es jetzt lediglich etwas vereinfacht:


$time = time();
$heute = strtotime(date('d-m-Y')) + 60;

if ($time > $heute)


Somit ist gewährleistet, dass die danach folgende if-Bedingung frühstens 1 Minute nach Mitternacht gestartet werden kann.

Gruß Frank

falk

Zitat von: Wetterfrosch1971 am 02.03.2017, 17:54:54


$time = time();
$heute = strtotime(date('d-m-Y')) + 60;

if ($time > $heute)


Somit ist gewährleistet, dass die danach folgende if-Bedingung frühstens 1 Minute nach Mitternacht gestartet werden kann.


Das passt so.

Ich möchte nicht besserwisserisch wirken, aber als Fan von sprechendem Programmiercode würde ich das anders schreiben. Das könnte hilfreich sein, wenn man nach langer Zeit mal wieder draufschauen muss.


$jetzt = time();
$mitternacht = strtotime(date('d-m-Y'));

if ($jetzt > $mitternacht + 60)


WernerWetter

Zitataber als Fan von sprechendem Programmiercode
$mitternacht = strtotime(date('d-m-Y'));

Als Experte:
Mitternacht über einen String zu ermitteln  ("strtotime") finde ich ein wenig seltsam. Geht das nicht einfacher?
Hab gerade Tante Google befragt:  das scheint eine akzeptierte Lösung zu sein  :top:

Wetterfrosch1971

Danke für eure Rückmeldung.
Dann denke ich, lass ich meinen Code so stehen, werde nur die Variablen umbenennen, damit man sich, wenn man später mal wieder reinschaut, besser zurechtfindet, da hat falk schon recht.

Gruß Frank