Jangan lupa untuk membahas masalah semantik tentang apa yang Anda maksud dengan tahun kabisat "satu tahun". Pengurangan 365 hari dari 2008-02-28 akan menghasilkan 2007-02-28, sedangkan mengurangi 365 hari dari 2008-02-29 akan menghasilkan 2007-03-31.
HostileFork mengatakan jangan percaya SE
Saya rasa itu sangat tergantung pada apa artinya "mengurangi satu tahun". Anda bisa berarti bulan dan hari yang sama tetapi satu tahun sebelumnya atau bulan dan hari setelah dikurangi 365 hari seperti yang ditunjukkan oleh Hostile.
// set your date here
$mydate = "2009-01-01";
/* strtotime accepts two parameters.
The first parameter tells what it should compute.
The second parameter defines what source date it should use. */
$lastyear = strtotime("-1 year", strtotime($mydate));
// format and display the computed dateecho date("Y-m-d", $lastyear);
Meskipun ada banyak jawaban yang dapat diterima untuk menjawab pertanyaan ini, saya tidak melihat contoh submetode yang menggunakan \Datetimeobjek: https://www.php.net/manual/en/datetime.sub.php
Jadi, sebagai referensi, Anda juga bisa menggunakan a \DateIntervaluntuk memodifikasi \Datetimeobjek:
$date = new \DateTime('2009-01-01');
$date->sub(new \DateInterval('P1Y'));
echo $date->format('Y-m-d');
Jawaban:
Anda dapat menggunakan
strtotime
:$date = strtotime('2010-01-01 -1 year');
The
strtotime
mengembalikan fungsi timestamp unix, untuk mendapatkan string diformat Anda dapat menggunakandate
:echo date('Y-m-d', $date); // echoes '2009-01-01'
sumber
Gunakan fungsi strtotime ():
$time = strtotime("-1 year", time()); $date = date("Y-m-d", $time);
sumber
Menggunakan objek DateTime ...
$time = new DateTime('2099-01-01'); $newtime = $time->modify('-1 year')->format('Y-m-d');
Atau gunakan sekarang untuk hari ini
$time = new DateTime('now'); $newtime = $time->modify('-1 year')->format('Y-m-d');
sumber
cara termudah yang saya gunakan dan bekerja dengan baik
date('Y-m-d', strtotime('-1 year'));
ini bekerja dengan sempurna .. semoga ini akan membantu orang lain juga .. :)
sumber
// set your date here $mydate = "2009-01-01"; /* strtotime accepts two parameters. The first parameter tells what it should compute. The second parameter defines what source date it should use. */ $lastyear = strtotime("-1 year", strtotime($mydate)); // format and display the computed date echo date("Y-m-d", $lastyear);
sumber
Di situs web saya, untuk memeriksa apakah orang yang mendaftar berusia 18 tahun , saya cukup menggunakan yang berikut:
$legalAge = date('Y-m-d', strtotime('-18 year'));
Setelah itu, bandingkan saja kedua tanggal tersebut.
Semoga bisa membantu seseorang.
sumber
Meskipun ada banyak jawaban yang dapat diterima untuk menjawab pertanyaan ini, saya tidak melihat contoh
sub
metode yang menggunakan\Datetime
objek: https://www.php.net/manual/en/datetime.sub.phpJadi, sebagai referensi, Anda juga bisa menggunakan a
\DateInterval
untuk memodifikasi\Datetime
objek:$date = new \DateTime('2009-01-01'); $date->sub(new \DateInterval('P1Y')); echo $date->format('Y-m-d');
Yang mengembalikan:
2008-01-01
Untuk informasi lebih lanjut
\DateInterval
, lihat dokumentasi: https://www.php.net/manual/en/class.dateinterval.phpsumber
Anda dapat menggunakan fungsi berikut untuk mengurangi 1 atau tahun mana pun dari sebuah tanggal.
function yearstodate($years) { $now = date("Y-m-d"); $now = explode('-', $now); $year = $now[0]; $month = $now[1]; $day = $now[2]; $converted_year = $year - $years; echo $now = $converted_year."-".$month."-".$day; } $number_to_subtract = "1"; echo yearstodate($number_to_subtract);
Dan melihat contoh di atas, Anda juga dapat menggunakan yang berikut ini
$user_age_min = "-"."1"; echo date('Y-m-d', strtotime($user_age_min.'year'));
sumber