bagaimana cara mendapatkan tanggal kemarin menggunakan php?

91

Saya ingin mendapatkan tanggal kemarin menggunakan format tanggal tertentu di php ini adalah formatnya:

$today = date("d.m.Y"); //15.04.2013

Apa itu mungkin?

Pertimbangkan bulan dan tahun jika masing-masing harus diubah.

unique_programmer
sumber
1
tanggal ("dmy", waktu () - 60 * 60 * 24);
NINCOMPOOP
apakah Anda mencoba solusi saya? ini akan bekerja dengan perubahan bulan juga
Fabio
saat yang tepat ketika nama pengguna "noob" di atas saya menambahkan arti yang baik pada komentarnya :)
STT LCU

Jawaban:

264

ini dia

date('d.m.Y',strtotime("-1 days"));

ini juga akan berfungsi jika bulan berubah

Fabio
sumber
Pilihan kecil: Fungsi Anda mendapat masalah menjelang tengah malam jika waktu tersebut mencakup perubahan DST. Secara eksplisit pergi siang membantu di sana.
Deduplicator
1
Salah . 3 hal tentang DST: 1 itu tergantung pada waktu server, jika server memiliki zona waktu yang benar itu tidak akan mempengaruhi fungsi saya. 2 tidak seluruh dunia dipengaruhi oleh DST, ada tempat yang tidak menggunakannya. 3 sebagian besar tempat digunakan untuk mengubah waktu selama jam-jam pertama hari itu (seperti jam 2 atau 3 pagi) sehingga tidak akan memengaruhi perubahan hari.
Fabio
1
1. Agar fungsi tersebut mengetahui dan memperhatikan bahwa satu hari bisa lebih dari 24 jam? 2. Bahkan jam rusak benar dua kali sehari. 3. Jam tepatnya yang dicuri / digandakan tidak terlalu penting untuk perhitungan.
Deduplicator
1
tidak masuk akal 1 hari tidak lain dari 24 sampai DST merubah waktu dan server merubah waktu sesuai 2 tentunya itu tapi bukan itu point 3 ini yang sangat penting malah, ide anda bisa benar jika waktu berubah tengah malam, tidak pada jam-jam lain
Fabio
7

Anda dapat melakukannya dengan

date("F j, Y", time() - 60 * 60 * 24);

atau oleh

date("F j, Y", strtotime("yesterday"));
NullPoiиteя
sumber
3
Tidak dijamin dengan penghematan siang hari ... orang benar-benar harus menggunakan objek DateTime hari ini
Mark Baker
Akan bekerja dengan baik jika beroperasi pada waktu UTC. date_default_timezone_set ('UTC');
Patrick
7

Langkah 1

Kita perlu mengatur format data di function date (): Function date () mengembalikan string yang diformat sesuai dengan string format yang diberikan menggunakan stempel waktu integer yang diberikan atau waktu saat ini jika stempel waktu ifno diberikan. Dengan kata lain, stempel waktu adalah opsional dan default ke nilai time ().

<?php
echo date("F j, Y");
?>

hasil: 30 Maret 2010

Langkah 2

Untuk tanggal "kemarin", gunakan fungsi php mktime (): Fungsi mktime () mengembalikan stempel waktu Unix yang sesuai dengan argumen yang diberikan. Stempel waktu ini adalah bilangan bulat panjang yang berisi jumlah detik antara Unix Epoch (1 Januari 1970 00:00:00 GMT) dan waktu yang ditentukan. Argumen dapat ditinggalkan secara berurutan dari kanan ke kiri; argumen apa pun yang dihilangkan akan disetel ke nilai saat ini sesuai dengan tanggal dan waktu lokal.

<?php
echo mktime(0, 0, 0, date("m"), date("d")-1, date("Y"));
?>

hasil: 1269820800

LANGKAH 3

Sekarang gabungkan semua dan lihat ini:

<?php
$yesterday = date("Y-m-d", mktime(0, 0, 0, date("m") , date("d")-1,date("Y")));
echo $yesterday;
?>

hasil: 29 Maret 2010

Beroperasi dengan cara yang sama, dimungkinkan untuk menerima waktu jam kembali.

<?php
$yesterday = date("H:i:s",mktime(date("H"), 0, 0, date("m"),date("d"), date("Y")));
echo $yesterday;
?>

hasil: 20:00:00

atau 7 hari yang lalu:

<?php
$week = date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-7,date("Y")));
echo $week;
?>

hasil: 2010-03-23

Gaurang P.
sumber
7

coba ini

        $tz    = new DateTimeZone('Your Time Zone');
        $date  = new DateTime($today,$tz);
        $interval = new DateInterval('P1D');
        $date->sub($interval); 

        echo $date->format('d.m.y');

        ?>           
selalu Belajar
sumber
lihat php.net/manual/en/book.datetime.php ini '.. Ini akan bekerja dengan perubahan bulan juga
selaluPelajari
9
DateTime baru ('kemarin')
Virgili Garcia
$ kemarin = DateTime baru ('kemarin', DateTimeZone baru ('Zona Waktu Anda'));
miralong
Sedikit penjelasan dengan jawaban hanya kode ini akan menyenangkan.
mickmackusa
4

Tanggal Kemarin dalam PHP:

echo date("Y-m-d", strtotime("yesterday")); 
Dhara Talaviya
sumber
3

Jika Anda menentukan zona waktu di aplikasi PHP Anda (sebagaimana mestinya), Anda dapat melakukannya dengan cara ini:

date_default_timezone_set('Europe/Paris');

Maka sesederhana itu:

$yesterday = new DateTime('yesterday'); // will use our default timezone, Paris
echo $yesterday->format('Y-m-d'); // or whatever format you want

(Anda mungkin ingin menentukan konstanta atau variabel lingkungan untuk menyimpan zona waktu default Anda.)

Fabien Snauwaert
sumber
2

coba ini

<?php
$yesterday = date(“d.m.Y”, time()-86400);
echo $yesterday;
liyakat
sumber
3
Karena perbedaan musim panas, satu hari tidak selalu memiliki 86400 detik! Jadi perhitungan ini bisa salah dua kali setahun!
sbrbot
... dan karena detik kabisat.
Sebastian Mach
1

Metode OOP lain untuk DateTime dengan mengatur jam yang tepat:

$yesterday = new DateTime("yesterday 09:00:59", new DateTimeZone('Europe/London'));
echo $yesterday->format('Y-m-d H:i:s') . "\n";
raksasa
sumber
0

Anda juga dapat melakukan ini menggunakan perpustakaan Karbon :

Carbon::yesterday()->format('d.m.Y');         // '26.03.2019'

Dalam format lain:

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'
ns16
sumber