Jak obliczyć różnicę minut między dwiema datami w PHP?
269
Odejmij przeszłość najbardziej od przyszłej najbardziej i podziel przez 60.
Czasy są wykonywane w formacie Unix, więc są tylko dużą liczbą pokazującą liczbę sekund od January 1, 1970, 00:00:00 GMT
Powyższe odpowiedzi dotyczą starszych wersji PHP. Użyj klasy DateTime, aby wykonać obliczenia daty teraz, gdy PHP 5.3 jest normą. Na przykład.
$ since_start jest obiektem DateInterval . Zauważ, że właściwość days jest dostępna (ponieważ użyliśmy metody diff klasy DateTime do wygenerowania obiektu DateInterval).
Powyższy kod wyświetli:
1837 dni łącznie
5 lat
0 miesięcy
10 dni
6 godzin
14 minut
2 sekund
Aby uzyskać całkowitą liczbę minut:
Spowoduje to wygenerowanie:
2645654 minuty
To jest faktyczna liczba minut, które upłynęły między dwiema datami. Klasa DateTime weźmie pod uwagę czas letni (w zależności od strefy czasowej) tam, gdzie „stary sposób” nie. Przeczytaj instrukcję dotyczącą daty i godziny http://www.php.net/manual/en/book.datetime.php
źródło
inSeconds()
ani podobnej, teraz jest to powtarzanie kodu wszędzie, gdzie muszę obliczyć różnicę w sekundach.$dateFrom = new DateTime('2007-09-01 04:10:58'); $dateTo = new DateTime('2012-09-11 10:25:00'); echo ($dateTo->getTimestamp()-$dateFrom->getTimestamp())/60 ;
strtotime
powyższa odpowiedź? Wydaje się, że jest to przypadek OOP, gdy procedura jest co najmniej jako prawidłowe (i znacznie bardziej zwięzłe) rozwiązanie.Oto odpowiedź:
źródło
/ 60,2
oznacza to: podziel przez sześćdziesiąt, zaokrąglając do najbliższych dwóch miejsc po przecinku.strtotime
może być przestarzałe, ale nie jest zawodne, jeśli używasz go poprawnie. Jest oczywiste, że musisz pracować ze spójnymi formatami dat, aby móc poprawnie odczytać (lub parsować) daty. ZobaczISO 8601
i nie obwiniaj narzędzi: =)źródło
sleep
obliczenia różnicy dat?Działa w moich programach, używam
date_diff
, możesz sprawdzićdate_diff
instrukcję tutaj .Otrzymujesz wyniki, czego chcesz.
źródło
inny sposób ze strefą czasową.
źródło
$days = $interval->format('%d');
a różnica jest($days * 1440 + $hours * 60 + $minutes)
. Przez miesiące lata => ta sama logikaNapisałem tę funkcję na jednym z moich blogów (różnica między datą przeszłą a datą serwera). To da ci takie wyjście
„49 sekund temu”, „20 minut temu”, „21 godzin temu” i tak dalej
Użyłem funkcji, która dałaby mi różnicę między datą przejścia a datą serwera.
Zapisz go jako plik, załóżmy, że „date.php”. Wywołaj funkcję z innej strony takiej jak ta
Oczywiście możesz zmodyfikować funkcję, aby przekazać dwie wartości.
źródło
Myślę, że to ci pomoże
źródło
$minutes = floor(($seconds/60)%60);
źródło
Bardziej uniwersalna wersja zwracająca wynik w dniach, godzinach, minutach lub sekundach, w tym ułamki zwykłe / dziesiętne:
źródło
Oto jak wyświetlałem „xx razy temu” w php> 5.2. Oto więcej informacji o obiekcie DateTime
źródło
Wynik:
źródło
Odejmij czasy i podziel przez 60.
Oto przykład, który oblicza upływ czasu
2019/02/01 10:23:45
w minutach:źródło
Moje rozwiązanie, aby znaleźć różnicę między dwiema datami, jest tutaj. Dzięki tej funkcji możesz znaleźć różnice, takie jak sekundy, minuty, godziny, dni, lata i miesiące.
Możesz rozwinąć tę funkcję. Testowałem i działa dla mnie. Dane wyjściowe obiektu DateInterval są tutaj:
Zastosowanie funkcji:
$ date = data z przeszłości, $ diff = typ np .: „minuty”, „dni”, „sekundy”
Powodzenia.
źródło
To pomoże....
źródło
Znalazłem tak wiele rozwiązań, ale nigdy nie znalazłem właściwego rozwiązania. Ale stworzyłem kod, aby znaleźć minuty, sprawdź to.
Daje wynik w godzinach i minutach, na przykład 01 godzina 02 minut jak 01:02
źródło