Naprawdę utknąłem z dodawaniem X minut do daty i godziny, po wielu przeglądaniu google i ręcznym czytaniu PHP, wydaje się, że nic nie osiągam.
Mam następujący format daty i czasu:
2011-11-17 05:05
: year-month-day hour:minute
Minuty do dodania to po prostu liczba od 0 do 59
Chciałbym, aby wynik był taki sam jak format wejściowy z dodanymi minutami.
Czy ktoś mógłby mi podać działający przykład kodu, ponieważ moje próby nigdzie mnie nie prowadzą?
strtotime
tworzy uniksowy znacznik czasu,integer
który jest przydatny, jeśli na przykład sortujesz daty w php.DateTime
Klasa udostępnia opcje dla operacji typu obiektów i proceduralnym. Jest bardziej czytelny i lepiej obsługuje różnice między różnymi strefami czasowymi; na przykład, jeśli masz projekt, który generuje daty dla wielu różnych stref czasowych pochodzących z tej samej instancji danych.Klasa DateTime w PHP zawiera przydatną metodę modyfikacji , która pobiera łatwy do zrozumienia tekst.
$dateTime = new DateTime('2011-11-17 05:05'); $dateTime->modify('+5 minutes');
Możesz również użyć interpolacji lub konkatenacji ciągów do sparametryzowania:
$dateTime = new DateTime('2011-11-17 05:05'); $minutesToAdd = 5; $dateTime->modify("+{$minutesToAdd} minutes");
źródło
$newtimestamp = strtotime('2011-11-17 05:05 + 16 minute'); echo date('Y-m-d H:i:s', $newtimestamp);
wynik jest
Demo na żywo jest
here
Jeśli jeszcze go nie znasz
strtotime
, lepiej udaj się,php.net
aby odkryć jego wielką moc :-)źródło
Możesz to łatwo zrobić za pomocą natywnych funkcji:
strtotime('+59 minutes', strtotime('2011-11-17 05:05'));
Poleciłbym jednak metodę klasy DateTime, opublikowaną właśnie przez Tima.
źródło
Pomyślałem, że to pomoże niektórym, jeśli chodzi o strefy czasowe. Moje zmodyfikowane rozwiązanie jest oparte na rozwiązaniu @Tim Coopera, poprawna odpowiedź powyżej.
$minutes_to_add = 10; $time = new DateTime(); **$time->setTimezone(new DateTimeZone('America/Toronto'));** $time->add(new DateInterval('PT' . $minutes_to_add . 'M')); $timestamp = $time->format("Y/m/d G:i:s");
Pogrubiona linia, linia 3, to dodatek. Mam nadzieję, że to pomoże również niektórym ludziom.
źródło
Trochę późna odpowiedź, ale metoda, której użyłbym, to:
// Create a new \DateTime instance $date = DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00'); // Modify the date $date->modify('+5 minutes'); // Output echo $date->format('Y-m-d H:i:s');
Lub w PHP> = 5.4
echo (DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00'))->modify('+5 minutes')->format('Y-m-d H:i:s')
źródło
Nie wiem, dlaczego podejście ustawione jako rozwiązanie nie zadziałało dla mnie. Dlatego publikuję tutaj, co zadziałało dla mnie, mając nadzieję, że może pomóc każdemu:
$startTime = date("Y-m-d H:i:s"); //display the starting time echo '> '.$startTime . "<br>"; //adding 2 minutes $convertedTime = date('Y-m-d H:i:s', strtotime('+2 minutes', strtotime($startTime))); //display the converted time echo '> '.$convertedTime;
źródło
Jeśli chcesz podać zmienną zawierającą minuty.
Myślę więc, że to świetny sposób na osiągnięcie tego.
$minutes = 10; $maxAge = new DateTime('2011-11-17 05:05'); $maxAge->modify("+{$minutes} minutes");
źródło
Posługiwać się
strtotime("+5 minute", $date);
Przykład:
$date = "2017-06-16 08:40:00"; $date = strtotime($date); $date = strtotime("+5 minute", $date); echo date('Y-m-d H:i:s', $date);
źródło
Jak zauważyli Brad i Nemoden w swoich odpowiedziach powyżej, strtotime () to świetna funkcja. Osobiście uważam, że standardowy obiekt DateTime jest zbyt skomplikowany w wielu przypadkach użycia. Chciałem tylko dodać 5 minut do aktualnego czasu.
Napisałem funkcję, która zwraca datę jako ciąg z kilkoma opcjonalnymi parametrami:
1.) time: String | np .: „+5 minut” (domyślnie = aktualny czas)
2.) format: String | np .: „Ymd H: i: s” (domyślnie = „Ymd H: i: s O”)
Oczywiście nie jest to w pełni funkcjonalna metoda. Po prostu szybka i prosta funkcja do modyfikacji / formatowania aktualnej daty.
function get_date($time=null, $format='Y-m-d H:i:s O') { if(empty($time))return date($format); return date($format, strtotime($time)); } // Example #1: Return current date in default format $date = get_date(); // Example #2: Add 5 minutes to the current date $date = get_date("+5 minutes"); // Example #3: Subtract 30 days from the current date & format as 'Y-m-d H:i:s' $date = get_date("-30 days", "Y-m-d H:i:s");
źródło
Jeszcze jeden przykład funkcji, która to robi: (zmiana formatów czasu i interwałów w dowolny sposób, zgodnie z tym dla funkcji function.date i dla DateInterval ):
(Napisałem również alternatywną formę poniższej funkcji ).
// Return adjusted time. function addMinutesToTime( $dateTime, $plusMinutes ) { $dateTime = DateTime::createFromFormat( 'Y-m-d H:i', $dateTime ); $dateTime->add( new DateInterval( 'PT' . ( (integer) $plusMinutes ) . 'M' ) ); $newTime = $dateTime->format( 'Y-m-d H:i' ); return $newTime; } $adjustedTime = addMinutesToTime( '2011-11-17 05:05', 59 ); echo '<h1>Adjusted Time: ' . $adjustedTime . '</h1>' . PHP_EOL . PHP_EOL;
źródło
jednowierszowy format daty i godziny mysql
$mysql_date_time = (new DateTime())->modify('+15 minutes')->format("Y-m-d H:i:s");
źródło
Bez użycia zmiennej:
$yourDate->modify("15 minutes"); echo $yourDate->format( "Y-m-d H:i");
Przy użyciu zmiennej:
$interval= 15; $yourDate->modify("+{$interval } minutes"); echo $yourDate->format( "Y-m-d H:i");
źródło
$yourDate
? Co ta odpowiedź dodaje do podobnych odpowiedzi opublikowanych lata wcześniej?