szukaj używając nazw tagów otoczonych nawiasami, np. [php] [date] addw polu wyszukiwania. Znajdziesz wiele odpowiedzi na takie pytania.
Mikel
Odpowiedzi:
247
To powinno być
echo date('Y-m-d', strtotime("+30 days"));
strtotime
oczekuje, że otrzyma ciąg zawierający format daty w języku angielskim (USA) i spróbuje przeanalizować ten format na znacznik czasu uniksowego (liczbę sekund od 1 stycznia 1970 00:00:00 UTC), w odniesieniu do sygnatury czasowej podanej w now, lub aktualny czas, jeśli teraz nie jest podany.
podczas date
Zwraca ciąg sformatowany zgodnie z podanym ciągiem formatu przy użyciu podanego znacznika czasu w postaci liczby całkowitej lub bieżącego czasu, jeśli nie podano znacznika czasu.
Myślę, że spowoduje to problemy podczas przekraczania czasu letniego i innych zabawnych elementów kalendarza. To w pewnym sensie zależy od kontekstu. Musisz pomyśleć o tym, czy szukasz 30 bloków 24-godzinnych, które podczas przekraczania dnia letniego mogą wskazywać na 23:00.
JJ Rohrer
1
@JJRohrer nie, nie będzie. strtotimeweźmie pod uwagę czas letni dla skonfigurowanej strefy czasowej. Czas letni jest problemem tylko wtedy, gdy robisz coś takiego jak ten OP: stackoverflow.com/questions/4066035
Gordon
Punkt zajęty. Dotarłem do tego pytania, próbując rozwiązać coś nieco bliższego pytaniu, o którym mówiłeś. Mam nadzieję, że mój powyższy komentarz sprawi, że inni pomyślą o potraktowaniu poważnie swoich obliczeń dat - łatwo zapomnieć o wszystkich wyjątkach.
JJ Rohrer
64
Ten może być dobry
function addDayswithdate($date,$days){
$date = strtotime("+".$days." days", strtotime($date));return date("Y-m-d", $date);}
Powyższe rozwiązanie można również zagęścić w jednej linii, jeśli potrzebujesz szybkiego rozwiązania i nie chcesz tworzyć funkcji. echo date ("Ymd", strtotime ("+ 12days", strtotime (20130101)))
Ta metoda dotyczy przekroczenia czasu letniego. Nie jestem pewien, czy php uwzględnia inne dziwactwa czasowe, takie jak sekundy przestępne, ale w zależności od potrzeb prawdopodobnie lepiej będzie korzystać z DateTime vs. StrToTime, jeśli masz do czynienia z dniami kalendarzowymi.
JJ Rohrer
@chx To rozwiązanie pozwala również dokładniej określić datę; np. nowy DateTime („2016-12-09 10:35:58”); pochodzi z sygnatury czasowej bazy danych ...
Możesz również dodać w ten sposób, jeśli chcesz, aby data 5 dni od określonej daty:
Masz zmienną z datą taką jak ta (pobrana z wejścia lub bazy danych lub po prostu zakodowana na stałe):
$today ="2015-06-15";// Or can put $today = date ("Y-m-d");
$fiveDays = date ("Y-m-d", strtotime ($today ."+5 days"));
echo $fiveDays;// Will output 2015-06-20
Możesz użyć klasy DateTime wbudowanej w PHP. Ma metodę o nazwie „add”, a sposób jej użycia jest dokładnie przedstawiony w podręczniku: http://www.php.net/manual/en/datetime.add.php
[php] [date] add
w polu wyszukiwania. Znajdziesz wiele odpowiedzi na takie pytania.Odpowiedzi:
To powinno być
strtotime
podczas
date
Zobacz strony podręcznika
i ich sygnatury funkcyjne.
źródło
strtotime
weźmie pod uwagę czas letni dla skonfigurowanej strefy czasowej. Czas letni jest problemem tylko wtedy, gdy robisz coś takiego jak ten OP: stackoverflow.com/questions/4066035Ten może być dobry
źródło
lub
print date('Y-m-d H:i:s', mktime(date("H"), date("i"), date("s"), date("m"), date("d") + 7, date("Y"));
źródło
źródło
Możesz również dodać w ten sposób, jeśli chcesz, aby data 5 dni od określonej daty:
Masz zmienną z datą taką jak ta (pobrana z wejścia lub bazy danych lub po prostu zakodowana na stałe):
źródło
Należy pamiętać, że zmiana zegara ze względu na czas letni może spowodować pewne problemy przy obliczaniu tylko dni.
Oto mała funkcja php, która się tym zajmuje:
źródło
Możesz też spróbować:
$date->modify("+30 days");
źródło
Możesz to zrobić, manipulując kodem czasowym lub używając strtotime () . Oto przykład użycia strtotime.
źródło
Możesz użyć strtotime ()
$data['created'] = date('Y-m-d H:m:s', strtotime('+1 week'));
źródło
Wiem, że to stare pytanie, ale dla PHP <5.3 możesz spróbować tego:
źródło
Możesz użyć klasy DateTime wbudowanej w PHP. Ma metodę o nazwie „add”, a sposób jej użycia jest dokładnie przedstawiony w podręczniku: http://www.php.net/manual/en/datetime.add.php
Wymaga jednak PHP 5.3.0.
źródło
źródło
Możesz tego spróbować.
źródło
Proste i najlepsze
Spróbuj tego
źródło
źródło
Użyj tej funkcji addDate (), aby dodać lub odjąć dni, miesiące lub lata (będziesz potrzebować również pomocniczej funkcji reformatDate ())
Uwaga: tylko dla php> = 5.3
źródło
Użyj poniższego kodu.
Stąd znaleziono odniesienie - Jak dodać dni do bieżącej daty w PHP
źródło
źródło
Chociaż jest to stara kwestia, taki sposób postępowania wymagałby wielu sytuacji i wydaje się być solidny. Musisz mieć PHP 5.3.0 lub nowszy.
Możesz mieć dowolny format ciągu daty i to zadziała.
źródło