दिनांक माइनस 1 वर्ष?


91

मुझे इस प्रारूप में एक तारीख मिली है:

2009-01-01

मैं उसी तारीख को कैसे लौटूं लेकिन 1 साल पहले?


3
आप "एक वर्ष" wrt लीप वर्षों से क्या मतलब है के शब्दार्थ मुद्दे की ओर रुख करना न भूलें। 2008-02-28 से 365 दिन घटाकर आपको 2007-02-28 दिया जाएगा, जबकि 2008-02-29 से 365 दिन घटाकर आपको 2007-03-31 मिल जाएगा।
HostileFork का कहना है कि

मुझे लगता है कि यह बहुत कुछ "एक साल घटाना" पर निर्भर करता है इसका मतलब है। आप एक ही महीने और दिन का मतलब हो सकता है लेकिन एक साल पहले या महीने और दिन के बाद 365 दिन घटा सकते हैं जैसा कि शत्रुतापूर्ण बताते हैं।
डी। शेवले

जवाबों:


130

आप उपयोग कर सकते हैं strtotime:

$date = strtotime('2010-01-01 -1 year');

strtotimeसमारोह एक यूनिक्स टाइमस्टैम्प देता है, एक स्वरूपित स्ट्रिंग आप उपयोग कर सकते हैं पाने के लिए date:

echo date('Y-m-d', $date); // echoes '2009-01-01'

99

Strtotime () फ़ंक्शन का उपयोग करें:

  $time = strtotime("-1 year", time());
  $date = date("Y-m-d", $time);

51

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

31

एक आसान तरीका जो मैंने इस्तेमाल किया और अच्छा काम किया

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

6

मेरी वेबसाइट पर, यह जांचने के लिए कि लोगों का पंजीकरण 18 वर्ष का है , मैंने बस निम्नलिखित का उपयोग किया है:

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

के बाद, केवल दो तिथियों की तुलना करें।

आशा है कि यह किसी की मदद कर सकता है।


2

यद्यपि इस प्रश्न के उत्तर में कई स्वीकार्य उत्तर हैं, मुझे ऑब्जेक्ट subका उपयोग करने की विधि का कोई उदाहरण नहीं दिखता है \Datetime: https://www.php.net/manual/en/datetime.sub.php

इसलिए, संदर्भ के लिए, आप \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


-3

दिनांक से 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'));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.