Mały wybór: Twoja funkcja wpadnie w kłopoty około północy, jeśli w tym czasie nastąpi zmiana czasu letniego. Pomocne jest tu jawne przejście w południe.
Deduplicator
1
Źle . 3 rzeczy na temat czasu letniego: 1 zależy od czasu serwera, jeśli serwer ma odpowiednią strefę czasową, nie wpłynie to na moją funkcję. 2 Czas letni nie dotyczy całego świata, są miejsca, które go nie używają. 3 większość miejsc używa do zmiany czasu w pierwszych godzinach dnia (np. 2 lub 3 w nocy), więc nie będzie to miało wpływu na zmieniający się dzień.
Fabio
1
1. Więc ta funkcja wie i bierze pod uwagę, że dzień może być inny niż 24 godziny? 2. Nawet zepsuty zegar dwa razy dziennie wskazuje prawidłową godzinę. 3. Dokładna godzina, która została skradziona / skopiowana, nie jest tak ważna dla obliczeń.
Deduplicator,
1
bez sensu 1 dziennie to nie więcej niż 24 do czasu letniego zmienić czas, a serwer zmienia czas zgodnie z 2 oczywiście tak, ale nie o to chodzi 3 to jest bardzo ważne zamiast tego, twój pomysł może być dobry, jeśli czas zmieni się o północy, nie w innych godzinach
Brak gwarancji w przypadku czasu letniego ... ludzie naprawdę powinni w tych dniach używać obiektów DateTime
Mark Baker
Będzie działać dobrze, jeśli działa w czasie UTC. date_default_timezone_set ('UTC');
Patrick
7
Krok 1
Potrzebujemy ustawić dane formatu w funkcji date (): Funkcja date () zwraca łańcuch sformatowany zgodnie z danym ciągiem formatującym przy użyciu podanego znacznika czasu w postaci liczby całkowitej lub bieżącego czasu, jeśli nie podano znacznika czasu. Innymi słowy, timestamp jest opcjonalny i domyślnie przyjmuje wartość time ().
<?phpecho date("F j, Y");
?>
wynik: 30 marca 2010
Krok 2
Dla daty „wczoraj” użyj funkcji php mktime (): Funkcja mktime () zwraca uniksowy znacznik czasu odpowiadający podanym argumentom. Ten znacznik czasu jest długą liczbą całkowitą zawierającą liczbę sekund między epoką systemu Unix (1 stycznia 1970 00:00:00 GMT) a określonym czasem. Argumenty można pominąć w kolejności od prawej do lewej; wszelkie pominięte argumenty zostaną ustawione na bieżącą wartość zgodnie z lokalną datą i godziną.
$tz = new DateTimeZone('Your Time Zone');
$date = new DateTime($today,$tz);
$interval = new DateInterval('P1D');
$date->sub($interval);
echo $date->format('d.m.y');
?>
Odpowiedzi:
proszę bardzo
date('d.m.Y',strtotime("-1 days"));
zadziała to również w przypadku zmiany miesiąca
źródło
możesz to zrobić przez
date("F j, Y", time() - 60 * 60 * 24);
lub przez
date("F j, Y", strtotime("yesterday"));
źródło
Krok 1
Potrzebujemy ustawić dane formatu w funkcji date (): Funkcja date () zwraca łańcuch sformatowany zgodnie z danym ciągiem formatującym przy użyciu podanego znacznika czasu w postaci liczby całkowitej lub bieżącego czasu, jeśli nie podano znacznika czasu. Innymi słowy, timestamp jest opcjonalny i domyślnie przyjmuje wartość time ().
<?php echo date("F j, Y"); ?>
wynik: 30 marca 2010
Krok 2
Dla daty „wczoraj” użyj funkcji php mktime (): Funkcja mktime () zwraca uniksowy znacznik czasu odpowiadający podanym argumentom. Ten znacznik czasu jest długą liczbą całkowitą zawierającą liczbę sekund między epoką systemu Unix (1 stycznia 1970 00:00:00 GMT) a określonym czasem. Argumenty można pominąć w kolejności od prawej do lewej; wszelkie pominięte argumenty zostaną ustawione na bieżącą wartość zgodnie z lokalną datą i godziną.
<?php echo mktime(0, 0, 0, date("m"), date("d")-1, date("Y")); ?>
wynik: 1269820800
Krok 3
Teraz połącz wszystko i spójrz na to:
<?php $yesterday = date("Y-m-d", mktime(0, 0, 0, date("m") , date("d")-1,date("Y"))); echo $yesterday; ?>
wynik: 29 marca 2010
Działając w podobny sposób możliwe jest cofnięcie czasu o godzinę.
<?php $yesterday = date("H:i:s",mktime(date("H"), 0, 0, date("m"),date("d"), date("Y"))); echo $yesterday; ?>
wynik: 20:00:00
lub 7 dni temu:
<?php $week = date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-7,date("Y"))); echo $week; ?>
wynik: 2010-03-23
źródło
Spróbuj tego
$tz = new DateTimeZone('Your Time Zone'); $date = new DateTime($today,$tz); $interval = new DateInterval('P1D'); $date->sub($interval); echo $date->format('d.m.y'); ?>
źródło
Wczorajsza data w PHP:
echo date("Y-m-d", strtotime("yesterday"));
źródło
Jeśli zdefiniujesz strefę czasową w swojej aplikacji PHP (tak jak powinieneś), możesz to zrobić w ten sposób:
date_default_timezone_set('Europe/Paris');
Wtedy jest to tak proste, jak:
$yesterday = new DateTime('yesterday'); // will use our default timezone, Paris echo $yesterday->format('Y-m-d'); // or whatever format you want
(Możesz chcieć zdefiniować stałą lub zmienną środowiskową do przechowywania domyślnej strefy czasowej).
źródło
Spróbuj tego
<?php $yesterday = date(“d.m.Y”, time()-86400); echo $yesterday;
źródło
Inna metoda OOP dla DateTime z ustawieniem dokładnej godziny:
$yesterday = new DateTime("yesterday 09:00:59", new DateTimeZone('Europe/London')); echo $yesterday->format('Y-m-d H:i:s') . "\n";
źródło
Możesz to również zrobić za pomocą biblioteki Carbon :
Carbon::yesterday()->format('d.m.Y'); // '26.03.2019'
W innych formatach:
Carbon::yesterday()->toDateString(); // '2019-03-26' Carbon::yesterday()->toDateTimeString(); // '2019-03-26 00:00:00' Carbon::yesterday()->toFormattedDateString(); // 'Mar 26, 2019' Carbon::yesterday()->toDayDateTimeString(); // 'Tue, Mar 26, 2019 12:00 AM'
źródło