0 votes
in SoSci Survey (dt.) by s233742 (225 points)
edited by s233742

Guten Tag,

ist es möglich bei der Funktion strtotime() eine Uhrzeit des heutigen Tages einzugeben?
Da der Befehl an unterschiedlichen Tagen zu unterschiedlichen Uhrzeiten abgerufen wird kann ich also kein festes Datum eingeben und auch keine '+3 hours' -Angabe.
Ich hatte es aktuell mit 'today 10:00' gelöst aber da gab es bei einer Teilnehmerin eine Fehlermeldung... (Bei ihr stand, dass kein Versandzeitpunkt am 08.12.2011 erstellt werden kann, da dieses Datum in der Vergangenheit liegt.)
Und für den Kontext hier den gesamten Code:

$now = time();
if (($now + 3600)> strtotime('today 10:00')){ 
    mailRevoke(false, 3);
    mailSchedule(false, 3, random(3600, strtotime('today 12:00')));
}

Ich habe also an anderer Stelle per mailSchedule schon Versandzeitpunkte definiert aber diese sollen eben angepasst werden, sodass zwischen der Beantwortung und dem Versand mindestens eine Stunde vergeht.

Vielen herzlichen Dank

by s233742 (225 points)
Ist es möglich, dass die Formel random() nicht mit dem Zeitformat umgehen kann?
Also, dass ich erst in einem Zwischenschritt die zeitliche Differenz von jetzt bis 12:00 Uhr ausrechnen muss und diese Differenz dann an random übergebe?
Z.B. wie folgt:
$now = time();
if (($now + 3600) > strtotime('today 10:00')){
    mailRevoke(false, 3);
    $diff = (strtotime('today 12:00')-strtotime('now'));
    mailSchedule(false, 3, random(3600, $diff));
}
Könnte man das Problem so lösen?

1 Answer

0 votes
by SoSci Survey (305k points)

Bei ihr stand, dass kein Versandzeitpunkt am 08.12.2011 erstellt werden kann, da dieses Datum in der Vergangenheit liegt.

Bei mir funktioniert 'today 10:00' problemlos, zum Testen:

debug(date('d.m.Y H:i', strtotime('today 10:00')));

Das Problem ist eher das random(), mit dem Sie irgend einen Wert zwischen dem Unix-Zetstempel 3600 = 1 Uhr Nacht am 01.01.1970 und dem Zeitpunkt heute würfeln.

Ist es möglich, dass die Formel random() nicht mit dem Zeitformat umgehen kann?

Unix-Zeitstempel sind eher im Bereich von 1681389051. Sie können mittels random() also zwischen zwei Zeitstempeln etwas finden oder Sie können zwischen 0 und einer Differenz etwas suchen. Ersteres z.B.

$t = random(
  time(),
  strtotime('today 12:00:00')
);
debug(date('d.m.Y H:i', $t));

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...