2013-04-15 17 views
38
<?php 
    $date = "04-15-2013"; 
    $date = strtotime($date); 
    $date = strtotime("+1 day", $date); 
    echo date('m-d-Y', $date); 
?> 

To doprowadza mnie do szału i wydaje się takie proste. Jestem całkiem nowym użytkownikiem PHP, ale nie mogę tego zrozumieć. Echo zwraca 01-01-1970.PHP - dodaj 1 dzień do formatu daty mm-dd-rrrr

Data będzie pochodzić z POST w formacie m-d-Y, muszę dodać jeden dzień i mieć go jako nową zmienną do wykorzystania później.

Czy muszę zamienić datę $ na Y-m-d, dodać 1 dzień, a następnie przekonwertować z powrotem na m-d-Y? Czy mogę lepiej nauczyć się korzystać z DateTime?

+0

Jeśli data będzie przychodzić z pomocą 'Post', to jesteś zapewne lepiej wyłączyć za pomocą' $ jutro = date ('MD-Y', strtotime ("+ 1 dzień")); ' (Odpowiedź Fabio) i '$ tomorrow = $ _POST [$ tomorrow];' w twoim zbiorze zbierającym dane. –

Odpowiedz

87

tam idziesz

$date = "04-15-2013"; 
$date1 = str_replace('-', '/', $date); 
$tomorrow = date('m-d-Y',strtotime($date1 . "+1 days")); 

echo $tomorrow; 

to będzie wyjście

04-16-2013 

Dokumentacja dla obu funkcji
date
strtotime

+0

Idealnie! Nie wiedziałem, że to nie rozpozna "-". Nie mam problemu z przełączeniem go na "/". Dziękuję Ci! – Jayr

+0

witamy człowieka;) – Fabio

1

Format użyłeś nie jest rozpoznawane przez strtotime(). Wymienić

$date = "04-15-2013"; 

przez

$date = "04/15/2013"; 

Lub jeśli chcesz użyć - następnie stosujemy poniższy wiersz z roku przed:

$date = "2013-04-15"; 
45
$date = DateTime::createFromFormat('m-d-Y', '04-15-2013'); 
$date->modify('+1 day'); 
echo $date->format('m-d-Y'); 

See it in action

Lub w PHP 5.4+

echo (DateTime::createFromFormat('m-d-Y', '04-15-2013'))->modify('+1 day')->format('m-d-Y'); 

odniesienia

+0

Dobra odpowiedź! thx – hek2mgl

+1

OP powinien wyglądać na ten ;-) –

+0

+ Numer 13 zgłoszenie Cap'n –

0

Właściwie chciałem tego samego podobnego rzecza, Aby uzyskać roczną datę wsteczną, dla określonej daty! :-)

Z podpowiedzią powyższej odpowiedzi z @mohammad mohsenipur Dostałem się do następującego link, poprzez jego podany link!

Na szczęście istnieje metoda taka sama jak metoda date_add, o nazwie metoda date_sub! :-) Wykonuję następujące czynności, aby zrobić to, co chciałem!

$date = date_create('2000-01-01'); 
date_sub($date, date_interval_create_from_date_string('1 years')); 
echo date_format($date, 'Y-m-d'); 

Mam nadzieję, że ta odpowiedź również pomoże komuś! :-)

Powodzenia!