पिछले महीने की तारीख php में हो रही है


84

मैं पिछले महीने की तारीख पाना चाहता हूं। मैंने इसे लिखा है:

$prevmonth = date('M Y');

जो मुझे वर्तमान माह / वर्ष देता है। अगर मैं का उपयोग करना चाहिए strtotime, मैं नहीं बता सकता mktime। टाइमस्टैम्प के लिए कुछ? क्या मुझे रीसेट करने के लिए बाद में कुछ जोड़ने की आवश्यकता है ताकि मेरी साइट पर सभी टाइमस्टैम्प्स के लिए हर महीने तारीख निर्धारित न हो? मैं आरटीएम की कोशिश कर रहा हूं लेकिन मेरे लिए यह पता लगाना कठिन है।

जवाबों:


208

पिछले महीने की तारीख पाना सरल है

echo date("Y-n-j", strtotime("first day of previous month"));
echo date("Y-n-j", strtotime("last day of previous month"));

3 नवंबर को रिटर्न

2014-10-1
2014-10-31

7
यह एक बहुत अच्छा नहीं है और आपके कोड में त्रुटियां पैदा कर सकता है: $time = strtotime('2011-03-30 01:01:01'); echo date('r', strtotime('-1 month', $time));यह एक वापस लौटेगा बुध, 02 मार्च 2011 01:01:01 - फरवरी नहीं! strtotime('first day of previous month')इसके बजाय का उपयोग करें
ऑस्टिन

जब आप इसे 3 मार्च को चलाते हैं तो @OzzyCeshop यह 1 अक्टूबर और 31 को लौटता है
अज्ञात देव

$ data_day_str = strtotime ("पिछला महीना", strtotime ('2011-03-30 01:01:01 1)); आपको 2011 का दिन मिलेगा।
रॉड्रिगो सेरेडेलो

31
echo strtotime("-1 month");

यह पिछले महीने के लिए टाइमस्टैम्प का बिल्कुल उत्पादन करेगा। आपको बाद में कुछ भी रीसेट करने की आवश्यकता नहीं है। यदि आप इसे अंग्रेजी प्रारूप में चाहते हैं, तो आप टाइमस्टैम्प को प्रारूपित करने के लिए दिनांक () का उपयोग कर सकते हैं , अर्थात:

echo date("Y-m-d H:i:s",strtotime("-1 month"));

12
आज 31 अक्टूबर, 2012 है। तारीख ("Ymd", स्ट्रेटोटाइम ("- 1 महीना")); 2012-10-01 लौटता है। :(
टॉड

7
@toddsler सही। -1 महीना लेखन -30 दिनों के समान ही होता है जो वर्ष के दौरान कुछ तारीखों में 1 महीने को छोड़ देगा या उसी महीने पर रहेगा, इसलिए इस विधि से सावधान रहें।
रेशमकीट

इस समाधान का उपयोग न करें! पिछली टिप्पणियां सही हैं, आपके पास त्रुटियां होंगी जो केवल महीने के 31 वें दिन (या मार्च के 29,30,31 में) शुरू हो जाएंगी
किशोर

19
$prevmonth = date('M Y', strtotime("last month"));

3
यह दिनांक ('M Y', strtotime ("- 1 महीना")) के समान है, यदि आप तारीख ('M Y', strtotime ("2017-07-31 पिछले महीने") की तरह कुछ करते हैं) तो यह वापस आ जाएगी 2017-07-01, इसलिए सावधान रहें! दिनांक ('एम वाई', स्ट्रेटोटाइम ('2017-07-31 पिछले महीने का पहला दिन')) आपको वह देगा जो आप चाहते हैं
शैडोब

12

गलत उत्तर हैं:

$lastMonth = date('M Y', strtotime("-1 month"));
$lastDate = date('Y-m', strtotime('last month'));

कारण यह है कि यदि चालू माह 30+ दिन है, लेकिन पिछला महीना 29 है और कम $ lastMonth वर्तमान माह के समान होगा।

जैसे

If $currentMonth = '30/03/2016';
echo $lastMonth = date('m-Y', strtotime("-1 month")); => 03-2016
echo $lastDate = date('Y-m', strtotime('last month')); => 2016-03

सही उत्तर होगा:

echo date("m-Y", strtotime("first day of previous month")); => 02-2016
echo sprintf("%02d",date("m")-1) . date("-Y"); => 02-2016
echo date("m-Y",mktime(0,0,0,date("m")-1,1,date("Y"))); => 02-2016

1
यदि आप इको स्प्रिंटफ़ ("% 02d", दिनांक ("m") - 1) निकालते हैं, तो मैं अपवोट कर दूंगा। तिथि ( "- Y"); => 02-2016। यदि हम जीवित हैं, तो यह इस वर्ष के महीने 0 का जवाब देता है, पिछले वर्ष का 12 नहीं!
तमाम

6

यदि आप पिछले महीने ही प्राप्त करना चाहते हैं, तो आप निम्नानुसार उपयोग कर सकते हैं

$prevmonth = date('M Y', strtotime('-1 months'));

यदि आप पिछले महीने के समान दिन प्राप्त करना चाहते हैं, तो आप निम्नानुसार उपयोग कर सकते हैं ..

$prevmonth = date('M Y d', strtotime('-1 months'));

यदि आप पिछले महीने की अंतिम तिथि प्राप्त करना चाहते हैं, तो आप निम्नानुसार उपयोग कर सकते हैं ...

$prevmonth = date('M Y t', strtotime('-1 months'));

यदि आप पिछले महीने की पहली तारीख प्राप्त करना चाहते हैं, तो आप निम्नानुसार उपयोग कर सकते हैं ...

$prevmonth = date('M Y 1', strtotime('-1 months'));

3
31 वें महीने के लिए सावधान रहें! यह आपको वर्तमान महीने की पहली तारीख देगा! ऊपर देखो।
शैडैब

6
echo date('Y',strtotime("-1 year"));        //last year<br>
echo date('d',strtotime("-1 day"));     //last day<br>
echo date('m',strtotime("-1 month"));       //last month<br>

3
वर्तमान तिथि 2018/03/31 होने पर यह उत्तर सही नहीं है। विवरण भी इस
Ngoc Nam

4

पिछले महीनों की तुलना में कम होने पर इसे गलत पाया गया।

echo date("Y-m-d H:i:s",strtotime("-1 month"));

30 मार्च को कोशिश करें और आपको 2012-02 के बजाय 2012-03-01 मिलेगा ...

बेहतर समाधान पर काम कर रहे हैं ...


3
यह उत्तर सही है (-1 महीने सभी मामलों में ठीक से काम नहीं करेगा)। पिछले महीने के लिए, strtotime ('पिछले महीने') का उपयोग करें।
माइक

1
पिछले महीने या -1 महीने समान मूल्य देता है।
एटिने ड्यूप्सु

3
public function getLastMonth() {
    $now = new DateTime();
    $lastMonth = $now->sub(new DateInterval('P1M'));
    return $lastMonth->format('Ym');
}

1
2015-10-31PHP 5.5 और 5.6.11 में काम नहीं करेंगे। आपको 201510जैसा व्यवहार होगा, वैसा ही मिलेगा strtotime('- 1 month)
दोपहर 12:00

2

किसी भी तारीख के लिए पिछले महीने प्राप्त करने के लिए इस संक्षिप्त कोड का उपयोग करें:

$tgl = '25 january 2012';

$prevmonth = date("M Y",mktime(0,0,0,date("m", strtotime($tgl))-1,1,date("Y", strtotime($tgl))));
echo $prevmonth;

परिणाम दिसंबर 2011 है। पिछले महीने के साथ कम दिन वाले महीने में काम करता है।


2
$lastMonth = date('M Y', strtotime("-1 month"));
var_dump($lastMonth);
$lastMonth = date('M Y', mktime(0, 0, 0, date('m') - 1, 1, date('Y')));
var_dump($lastMonth);

4
जबकि कोड ही कुछ हद तक आत्म व्याख्यात्मक हो सकता है, यह अन्य उपयोगकर्ताओं को केवल कोड देने के बजाय आपके उत्तर की व्याख्या करने में मददगार होता है।
टर्नरज

1

आप का उपयोग कर सकते हैं strtotime, जो इस तरह की स्थितियों में महान है:

$timestamp = strtotime('-1 month');
var_dump(date('Y-m', $timestamp));

आपको मिलेगा:

string '2009-11' (length=7)

1
$time = mktime(0, 0, 0, date("m"),date("d")-date("t"), date("Y"));
$lastMonth = date("d-m-Y", $time);

या

$lastMonth = date("m-Y", mktime() - 31*3600*24);

30.03.2012 को काम करता है


1

ओह, मुझे यह समझ में आया, कृपया ध्यान न दें जब तक आपको वही समस्या न हो जो मैंने किया था:

$prevmonth = date("M Y",mktime(0,0,0,date("m")-1,1,date("Y")));

1

सबसे अच्छा समाधान मुझे यह मिल गया है:

function subtracMonth($currentMonth, $monthsToSubtract){
        $finalMonth = $currentMonth;
        for($i=0;$i<$monthsToSubtract;$i++) {
            $finalMonth--;
            if ($finalMonth=='0'){
                $finalMonth = '12';
            }

        }
        return $finalMonth;

    }

इसलिए अगर हम 3 (मार्च) में हैं और हम 5 महीने घटाना चाहते हैं

subtractMonth(3,5);

जो 10 (अक्टूबर) देगा। यदि वर्ष भी वांछित है, तो कोई ऐसा कर सकता है:

function subtracMonth($currentMonth, $monthsToSubtract){
    $finalMonth = $currentMonth;
    $totalYearsToSubtract = 0;
    for($i=0;$i<$monthsToSubtract;$i++) {
        $finalMonth--;
        if ($finalMonth=='0'){
            $finalMonth = '12';
            $totalYearsToSubtract++;
        }

    }
    //Get $currentYear
    //Calculate $finalYear = $currentYear - $totalYearsToSubtract 
    //Put resulting $finalMonth and $finalYear into an object as attributes
    //Return the object

}

0

इससे मेरा काम बनता है:

आज है: 31/03/2012

echo date("Y-m-d", strtotime(date('m', mktime() - 31*3600*24).'/01/'.date('Y').' 00:00:00')); // 2012-02-01
echo  date("Y-m-d", mktime() - 31*3600*24); // 2012-02-29

केवल 58.3 (3) मामलों में काम करता है। फरवरी, अप्रैल, जून, सितंबर और नवंबर के बारे में क्या? उनके पास 31 दिन नहीं हैं।
ताज़

0

यदि आप पिछले महीने की पहली तारीख प्राप्त करना चाहते हैं, तो आप निम्नानुसार उपयोग कर सकते हैं ... $prevmonth = date('M Y 1', strtotime('-1 months'));क्या? पहली तारीख हमेशा 1: D होगी


31 अक्टूबर, 2012। रिटर्न 2012-10-01
अकीरा यामामोटो

0

यह सवाल काफी पुराना है लेकिन यहाँ वैसे भी जाता है। यदि आप केवल पिछले महीने और दिन को प्राप्त करने की कोशिश कर रहे हैं तो इससे कोई फर्क नहीं पड़ता कि आप इसका उपयोग कर सकते हैं:

$date = '2014-01-03';

$dateTime = new DateTime($date);

$lastMonth = $dateTime->modify('-' . $dateTime->format('d') . ' days')->format('F Y');

echo $lastMonth; // 'December 2013'

0

बस पिछले महीने मिलता है।

उदाहरण:

आज है: 2020-09-02

कोड:

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

परिणाम:

2020/08/02


StackOverflow में आपका स्वागत है! शायद, आपको यह समझाने के लिए भी विचार करना चाहिए कि क्या होता है अगर दिन होता है 31और महीना जनवरी या अगस्त नहीं होता है (जैसे 2020 May 31बन जाता है 2020 April 31, वह मौजूद नहीं है)
xKobalt

php बिलिन फ़ंक्शन "दिनांक", इसे संभालें।
SL-phpdeveloper
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.