2012-12-20 14 views
7

Próbuję uzyskać miesiąc, sześć miesięcy od bieżącej daty.Dodaj sześć miesięcy w php

Próbowałem przy użyciu:

date('d', strtotime('+6 month', time()));

Ale nie wydaje się do pracy, zawsze zwraca 01. Czy jest lepszy sposób to zrobić?

Dziękujemy!

+0

Tak na marginesie, 'strtotime () 'domyślnie używa bieżącego czasu, jeśli pominięto drugi parametr. Ponadto, nie uważam, że 'strtotime()' będzie obliczał miesiące, ponieważ nie jest to bezwzględny okres czasu, np. liczba dni różni się z miesiąca na miesiąc. –

Odpowiedz

18

Uważam pracy z DateTime znacznie łatwiejsze w użyciu:

$datetime = new DateTime(); 
$datetime->modify('+6 months'); 
echo $datetime->format('d'); 

lub

$datetime = new DateTime(); 
$datetime->add(new DateInterval('P6M')); 
echo $datetime->format('d'); 

lub PHP w wersji 5.4+

echo (new DateTime())->add(new DateInterval('P6M'))->format('d'); 
+0

Działa doskonale, dziękuję! – dzm

2

Jeśli nadal chciał użyć strtotime i funkcja daty w przeciwieństwie do obiektu DateTime() zadziała:

date('d', strtotime('+6 months')); 
0

Nie musisz przekazywać time() do strtotime, ponieważ jest to ustawienie domyślne.

Poza tym, twoje podejście jest poprawne - z tym wyjątkiem, że bierzesz date('d') (co oznacza wygaszenie dnia), a nie date('m') na miesiąc, więc echo date('m', strtotime('+6 month')); powinien zrobić.

Niemniej jednak, polecam korzystanie z drogi DateTime, o której pisał John. DateTime ma kilka zalet w stosunku do "starych" funkcji daty, na przykład nie przestaje działać, gdy sekundy od czasu Wielkiego Wybuchu w systemie UNIX nie mieszczą się już w 32-bitowej liczbie całkowitej.

1

Można użyć klasy DateTime w połączeniu z klasą DateInterval:

<?php 
$date = new DateTime(); 
$date->add(new DateInterval('P6M')); 

echo $date->format('d M Y'); 
0

Można użyć simpleDate Klasa:

include('../code/simpleDate.php'); 
$date = new simpleDate(); 
echo $date->now()->addMonth(6)->get(); 

Sprawdź tutorials here.

Powiązane problemy