Angenommen, ich habe eine Zeichenfolge, "2007-02-28"
, was ist der einfachste Code, den ich schreiben könnte, um das in "2007-03-01"
zu verwandeln? Im Moment benutze ich nur strtotime()
, dann 24*60*60
, dann date()
, aber ich frage mich nur, ob es eine sauberere, einfachere oder schlauere Art und Weise, es zu tun.Einfachste Möglichkeit, ein Datum in PHP zu erhöhen?
Antwort
Eine saubere Art und Weise ist zu verwenden strtotime()
$date = strtotime("+1 day", strtotime("2007-02-28"));
echo date("Y-m-d", $date);
Wollen Sie die 2007-03-01
Es ist sauberer und einfacher 86400 :)
Die High-Tech-Weg hinzuzufügen ist zu tun:
$date = new DateTime($input_date);
$date->modify('+1 day');
echo $date->format('Y-m-d');
aber das ist wirklich nur aus der Ferne lohnt sich, wenn Sie tun, sagen wir, eine Folge von Transformationen am Datum, anstatt nur morgen zu finden.
Sie können die Zugabe direkt in strtotime tun geben, z.B.
$today="2007-02-28";
$nextday=strftime("%Y-%m-%d", strtotime("$today +1 day"));
Oh, ordentlich. Wusste das nicht. Es ist fast wie ein gutes altes Date :: Manip. – chaos
Eine andere Möglichkeit ist die Verwendung der Funktion mktime(). Es ist sehr nützliche Funktion ...
$date = "2007-02-28";
list($y,$m,$d)=explode('-',$date);
$date2 = Date("Y-m-d", mktime(0,0,0,$m,$d+1,$y));
aber ich denke, strtotime()
in dieser Situation besser ist ...
schön, ich wusste nicht, dass mktime() den Monat so erhöhen würde, wenn Sie über –
Die einfachste Art und Weise ...
echo date('Y-m-d',strtotime("+1 day")); //from today
oder von bestimmtem Datum ..
.echo date('Y-m-d',strtotime("+1 day", strtotime('2007-02-28')));
$early_start_date = date2sql($_POST['early_leave_date']);
$date = new DateTime($early_start_date);
$date->modify('+1 day');
$date_a = new DateTime($early_start_date . ' ' . $_POST['start_hr'] . ':' . $_POST['start_mm']);
$date_b = new DateTime($date->format('Y-m-d') . ' ' . $_POST['end_hr'] . ':' . $_POST['end_mm']);
$interval = date_diff($date_a, $date_b);
Hel lo können Sie versuchen, diese unter besonders wenn man französisch sind
$date = date('l j F Y');
#increment the date
$date2 = date('l j F Y', strtotime("+7 day"));
in Französisch übersetzen Sie die setlocaleQ verwenden können() Funktion oder die Funktion unter:
function fr_date($date){
$date = explode(' ', $date);
$date = str_replace('Monday','Lundi',$date);
$date = str_replace('Tuesday','Mardi',$date);
$date = str_replace('Wednesday','Mercredi',$date);
$date = str_replace('Thursday','Jeudi',$date);
$date = str_replace('Friday','Vendredi',$date);
$date = str_replace('Saturday','Samedi',$date);
$date = str_replace('Sunday','Dimanche',$date);
$date = str_replace('January','Janvier',$date);
$date = str_replace('February','Février',$date);
$date = str_replace('March','Mars',$date);
$date = str_replace('April','Avril',$date);
$date = str_replace('May','Mai',$date);
$date = str_replace('June','Juin',$date);
$date = str_replace('July','Juillet',$date);
$date = str_replace('August','Août',$date);
$date = str_replace('September','Septembre',$date);
$date = str_replace('October','Octobre',$date);
$date = str_replace('November','Novembre',$date);
$date = str_replace('December','Décembre',$date);
$date = implode(' ',$date);
return $date;
}
$your_date = strtotime("1month", strtotime(date("Y-m-d")));
$new_date = date("Y-m-d", $your_date++);
/("1Monat") gehen = wird monatlich erhöht. // ("1day") = wird um Tag erhöht. // (Datum ("Y-m-d")) = Beginnen Sie, das Datum an Ihrem aktuellen Datum zu erhöhen. –
Sie sollten Ihre Antwort so bearbeiten, dass sie die Erläuterung des Codes enthält, anstatt die Erläuterung in einem Kommentar zu enthalten. – astidham2003
Dumme CentOS hat nur PHP 5.1 , und DateTime wird in 5.2 eingeführt. Ich denke, ich muss dann endlich auf ein inoffizielles centos-php-Paket upgraden. – davr
Er, nein. Das Hinzufügen von 86400 ist eine falsche Einfachheit. – staticsan
Können Sie erklären, was Sie damit meinen? – chaos