Come posso get la domenica e il sabato della settimana in base a una data specifica?
Per esempio:
input: lunedì 28 settembre 2009
l'output dovrebbe essere:
Domenica, 27 settembre 2009 12:00 AM – Sabato 3 ottobre 2009 23:59
- Problema di creazione di un algorithm random migliore - diffusione giornaliera
- Come generare un ID ordine univoco (solo per mostrare all'utente) con l'ID ordine effettivo?
- Algoritmo di accorciamento URL PHP
- Cinque numbers unici e casuali da un sottoinsieme
- Come generare tutte le permutazioni di una string in PHP?
Sto pensando di usare le strtotime
date
, strtotime
, mktime
e time
php.
Se hai una function utilizzabile, allora va bene anche per me.
Grazie in anticipo 🙂
Saluti, Marco
Usa strtotime()
e date()
:
<?php $s = 'Monday, September 28, 2009'; $time = strtotime($s); $start = strtotime('last sunday, 12pm', $time); $end = strtotime('next saturday, 11:59am', $time); $format = 'l, F j, Y g:i A'; $start_day = date($format, $start); $end_day = date($format, $end); header('Content-Type: text/plain'); echo "Input: $s\nOutput: $start_day - $end_day"; ?>
uscite:
Input: Monday, September 28, 2009 Output: Sunday, September 27, 2009 12:00 PM - Saturday, October 3, 2009 11:59 AM
<?php date_default_timezone_set('Europe/London'); $datetime = new DateTime("2009-09-23 12:00:00"); // Saturday $datetime->setISODate(2009, $datetime->format("W"), 6); print "Saturday:" . $datetime->format(DATE_ATOM) . "\n"; // Sunday $datetime->setISODate(2009, $datetime->format("W"), 0); print "Sunday: " . $datetime->format(DATE_ATOM) . "\n"; ?>
dai un'occhiata a strtotime
vale a dire
strtotime('next sunday', strtotime($your_date_string));
data dell'eco ("Ymd H: i: s", strtotime ("ultima domenica", ora ()));
data dell'eco ("Ymd H: i: s", strtotime ("prossimo sabato", ora ()));
il problema con la risposta 'corretta' è, e se la data fornita è domenica? Quindi ti darà la domenica precedente, invece della domenica corrente. Stesso problema con sabato.
$s = 'Monday, September 28, 2009'; $time = strtotime($s); if(date('D', $time) == "Sun"){ $start = strtotime(' 12pm', $time); } else { $start = strtotime('last sunday, 12pm', $time); } if(date('D', $time) == "Sat"){ $start = strtotime(' 12pm', $time); } else { $start = strtotime('next saturday, 12pm', $time); } $format = 'l, F j, Y g:i A'; $start_day = date($format, $start); $end_day = date($format, $end); header('Content-Type: text/plain'); echo "Input: $s\nOutput: $start_day - $end_day";
strtotime
$input = strtotime("Monday, September 28, 2009"); $nextSunday = strtotime("next Sunday",$input);
<?php $date = strtotime('Monday, September 28, 2009 - 1 day'); $initialString = date('l, F d, Y g:i A', $date); $end = date('l, F d, Y g:i A', strtotime( 'next saturday 11:59 pm', $date)); echo $initialString . ' - ' . $end;
output: domenica 27 settembre 2009 00:00 – sabato 3 ottobre 2009 23:59
Questo è quello che stai cercando. È quello che uso.
$beginningOfWeek = date('Ymd H:i:s', strtotime('last Sunday')); $endOfWeek = date('Ymd H:i:s', strtotime('+6 day', strtotime('last Sunday')) );
Puoi trovare il mio Date Time Helper molto utile in questo caso, può finire in 3 linee
http://normandqq.github.io/Date-Time-Helper/
$date = '2013-08-11'; $monday = Model_DTHpr::getMondayByDate($date); $sunday = Model_DTHpr::adjustDays("add",$monday,6);
Produzione:
2013-08-05 //Monday 2013-08-11 //Sunday
Ottieni il codice PHP di domenica:
echo "Today Is : " . date("dmY"); $dw = date( "w"); $dw = 7-$dw; echo "\nNext Sunday Is" .date('dm-Y', strtotime("+$dw days"));