Wenn ich eine habe $date
YYYY-mm-dd
und eine bestimmte $day
(angegeben durch 0 (Sonntag) bis 6 (Samstag)) der Woche erhalten möchte, die YYYY-mm-dd
in ist.
Zum Beispiel, wenn ich 2012-10-11
als $date
und 5
als bekam $day
, möchte ich bekommen 2012-10-12
, wenn ich 0
als habe $day
,2012-10-14
EDIT:
Die meisten von euch haben es falsch verstanden. Ich habe ein Datum $date
und möchte einen Tag erhalten, der mit 0-6 der gleichen Woche angegeben $date
ist.
Also nein, ich will nicht den Tag von $date
...
Antworten:
Ich denke, das ist was du willst.
$dayofweek = date('w', strtotime($date)); $result = date('Y-m-d', strtotime(($day - $dayofweek).' day', strtotime($date)));
quelle
Sie können die Funktion date () verwenden:
date('w'); // day of week
oder
date('l'); // dayname
Beispielfunktion zum Abrufen des Tages nr.:
function getWeekday($date) { return date('w', strtotime($date)); } echo getWeekday('2012-10-11'); // returns 4
quelle
Versuchen
$date = '2012-10-11'; $day = 1; $days = array('Sunday', 'Monday', 'Tuesday', 'Wednesday','Thursday','Friday', 'Saturday'); echo date('Y-m-d', strtotime($days[$day], strtotime($date)));
quelle
2012-10-14
bei der Eingabe0
zurückgibt. @Rezigned gibt zurück2012-10-07
Wenn Ihr Datum bereits ein ist
DateTime
oderDateTimeImmutable
Sie dieformat
Methode verwenden können.$day_of_week = intval($date_time->format('w'));
Die Formatzeichenfolge ist identisch mit der von der Datumsfunktion verwendeten.
Um die beabsichtigte Frage zu beantworten:
$date_time->modify($target_day_of_week - $day_of_week . ' days');
quelle
Das PHP-Handbuch sagte:
Sie können daher ein Datum mit mktime erstellen und darin verwenden
date("w", $yourTime);
quelle
Gerade:
2012-10-11 als $ Datum und 5 als $ Tag
<?php $day=5; $w = date("w", strtotime("2011-01-11")) + 1; // you must add 1 to for Sunday echo $w; $sunday = date("Y-m-d", strtotime("2011-01-11")-strtotime("+$w day")); $result = date("Y-m-d", strtotime($sunday)+strtotime("+$day day")); echo $result; ?>
Das $ result = '2012-10-12' ist das, was Sie wollen.
quelle
Ich fürchte, Sie müssen es manuell tun. Ermitteln Sie den aktuellen Wochentag des Datums, berechnen Sie den Versatz und fügen Sie den Versatz zum Datum hinzu.
$current = date("w", $date) $offset = $day - $current $new_date = new DateTime($date) ->add( new DateInterval($offset."D") )->format('Y-m-d')
quelle
Ich musste eine ähnliche Lösung für Portugiesisch (Brasilien) verwenden:
<?php $scheduled_day = '2018-07-28'; $days = ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb']; $day = date('w',strtotime($scheduled_day)); $scheduled_day = date('d-m-Y', strtotime($scheduled_day))." ($days[$day])"; // provides 28-07-2018 (Sáb)
quelle
<?php echo date("H:i", time()); ?> <?php echo $days[date("l", time())] . date(", d.m.Y", time()); ?>
Einfach, das sollte den Trick machen
quelle