วันที่ลบ 1 ปี?


92

ฉันมีวันที่ในรูปแบบนี้:

2009-01-01

ฉันจะกลับวันเดียวกัน แต่ 1 ปีก่อนหน้านี้ได้อย่างไร


3
อย่าลืมโน้มน้าวประเด็นทางความหมายของสิ่งที่คุณหมายถึงโดย "หนึ่งปี" ปีอธิกสุรทิน การลบ 365 วันจาก 2008-02-28 จะให้คุณได้ 2007-02-28 ในขณะที่การลบ 365 วันจาก 2008-02-29 จะทำให้คุณได้ 2007-03-31
HostileFork บอกว่าอย่าไว้ใจ SE

ฉันเดาว่ามันขึ้นอยู่กับความหมายของ "การลบปี" เป็นอย่างมาก คุณอาจหมายถึงเดือนและวันเดียวกัน แต่หนึ่งปีก่อนหน้าหรือเดือนและวันหลังจากลบ 365 วันตามที่ Hostile ชี้ให้เห็น
D.Shawley

คำตอบ:




52

การใช้วัตถุ DateTime ...

$time = new DateTime('2099-01-01');
$newtime = $time->modify('-1 year')->format('Y-m-d');

หรือใช้ตอนนี้สำหรับวันนี้

$time = new DateTime('now');
$newtime = $time->modify('-1 year')->format('Y-m-d');

33

วิธีที่ง่ายที่สุดที่ฉันใช้และได้ผลดี

date('Y-m-d', strtotime('-1 year'));

ทำงานได้สมบูรณ์แบบ .. หวังว่านี่จะช่วยคนอื่นได้เช่นกัน .. :)


9
// 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);

7

ในเว็บไซต์ของฉันเพื่อตรวจสอบว่าการลงทะเบียนบุคคลที่มีอายุ 18 ปีฉันเพียงแค่ใช้สิ่งต่อไปนี้:

$legalAge = date('Y-m-d', strtotime('-18 year'));

หลังจากนั้นให้เปรียบเทียบเฉพาะวันที่ทั้งสอง

หวังว่ามันจะช่วยใครสักคนได้


4

แม้ว่าจะมีคำตอบที่ยอมรับได้มากมายสำหรับคำถามนี้ แต่ฉันไม่เห็นตัวอย่างของsubวิธีการที่ใช้\Datetimeวัตถุ: https://www.php.net/manual/en/datetime.sub.php

ดังนั้นสำหรับการอ้างอิงคุณยังสามารถใช้ a \DateIntervalเพื่อแก้ไข\Datetimeวัตถุ:

$date = new \DateTime('2009-01-01');
$date->sub(new \DateInterval('P1Y'));

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

ซึ่งผลตอบแทน:

2008-01-01

สำหรับข้อมูลเพิ่มเติม\DateIntervalโปรดดูเอกสาร: https://www.php.net/manual/en/class.dateinterval.php


-4

คุณสามารถใช้ฟังก์ชันต่อไปนี้เพื่อลบ 1 หรือปีใดก็ได้จากวันที่

 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);

และดูตัวอย่างด้านบนคุณสามารถใช้สิ่งต่อไปนี้

$user_age_min = "-"."1";
echo date('Y-m-d', strtotime($user_age_min.'year'));
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.