Timestamp auf ein vordefiniertes Datum setzen?

  • Themenstarter Themenstarter ByeBye 242513
  • Beginndatum Beginndatum
B

ByeBye 242513

Guten Morgen :),

wie kann ich realisieren das ein Timestamp gesetzt wird der immer den kommenden Sonntag - 19:00 Uhr beinhaltet?

Danke im Vorraus!
 
Hi,

ob es jetzt eine bessere/einfachere Lösung dafür gibt weiß ich nicht. Aber das hier funktioniert zumindest:

PHP:
<?php

$diff = array(7, 6, 5, 4, 3, 2, 1);

echo date("Y-m-d H:i:s", mktime("19", "00", "00", date("m"), date("d") + $diff[date("w")], date("Y")));

?>

date("w") ermittelt den aktuellen Wochentag, wobei Sonntag = 0, Montag = 1, ... Samstag = 6 ist.
Mit diesem Wert und der Variablen $diff wird damit der nächste Sonntag errechnet.
 
Sorry tombe, aber du hast heute wirklich komplizierte Lösungen.

PHP:
$timestampNextSunday = strtotime("next Sunday 19 hours"); 
echo date("Y-m-d H:i:s", $timestampNextSunday);
 
@yaslaw: Ok, auch der Punkt geht an dich. Aber wenigstens habe ich auch nur 2 Zeilen Code dafür gebraucht. :rolleyes:
 
Soll ich, soll ich nicht, soll ich.....
Nungut, du kannst deine Variante problemlos auf einen Einzeiler reduzieren und den Array weglassen
PHP:
echo date("Y-m-d H:i:s", mktime("19", "00", "00", date("m"), date("d") + (7-date("w")), date("Y")));

Jetzt stellt sich die Frage. Soll am Sonntag um 15 Uhr noch der gleiche Sonntag, aber 19 Uhr angezeigt werden oder bereits der nächste?
Dazu hjabe ich mal das folgende Testscript erstellt
PHP:
$ts = strtotime("2011-01-23 15:00:00");
echo 'Now: '.date("Y-m-d H:i:s", $ts)."<br />";

$timestampNextSunday = strtotime("next Sunday 19 hours", $ts); 
echo 'mit strtotime(): '.date("Y-m-d H:i:s", $timestampNextSunday)."<br />";

$timestampNextSunday = mktime("19", "00", "00", date("m",$ts), date("d",$ts) + (7-date("w",$ts)), date("Y",$ts));        
echo 'mit mktime: '.date("Y-m-d H:i:s", $timestampNextSunday);

Das Resultat
Code:
Now: 2011-01-23 15:00:00
mit strtotime(): 2011-01-23 19:00:00
mit mktime: 2011-01-30 19:00:00

Bei meiner Lösung wird am Sonntag um 15 Uhr also der gleiche Sonntag um 19 Uhr ausgegeben. Bei der Lösung von tombe wird bereits der folgende Sonntag gewählt.
Ja nachdem wie die Anforderung ist, taugt die eine oder die andere Lösung etwas.
 
yaslaw erweitert meine Denkweise, aber du hast vollkommen Recht!
Wenn bereits Sonntag 15:00 Uhr ist soll der selbe Sonntag 19:00 Uhr ausgegeben werden und nicht der darauf folgende.

Vielen Vielen Dank!

PS: Hoffentlich habe ich jetzt keine Konflikte zwischen euch beiden erzeugt :P
 
PS: Hoffentlich habe ich jetzt keine Konflikte zwischen euch beiden erzeugt :P
Ich glaube nicht. Wir lernen gerne voneinander.

ABer zum Thema. Auch ich lerne nicht aus. Ein weiterer kleiner Test hat ergeben dass so am Sonntag um 20 Uhr immer noch der gleiche Sonntag um 19 Uhr ausgegeben wird. Ergo muss ein kleiner Hack dazu
PHP:
//Ab PHP 5.3 kann man anstelle von strtotime("+1 day", $ts) auch date_add() verwenden
if(date('G') >= 19 ) $ts = strtotime("+1 day"); 
$timestampNextSunday = strtotime("next Sunday +19 hours");


Hier mein aktuelles testscript
PHP:
<?php 
printNextSunday19(strtotime("2011-01-22 20:00:00"));
printNextSunday19(strtotime("2011-01-23 18:59:59"));
printNextSunday19(strtotime("2011-01-23 19:00:00"));
printNextSunday19(strtotime("2011-01-23 19:00:01"));


function printNextSunday19($ts){
    echo date("Y-m-d H:i:s", $ts).' => ';
    if(date('G', $ts) >= 19 ) $ts = strtotime("+1 day", $ts); 
    $timestampNextSunday = strtotime("next Sunday +19 hours", $ts); 
    echo date("Y-m-d H:i:s", $timestampNextSunday).'<br />';
}
?>
Code:
2011-01-22 20:00:00 => 2011-01-23 19:00:00
2011-01-23 18:59:59 => 2011-01-23 19:00:00
2011-01-23 19:00:00 => 2011-01-30 19:00:00
2011-01-23 19:00:01 => 2011-01-30 19:00:00
 
Zurück