2017-05-31 6 views
5
में पिछले महीने मूल्य प्राप्त

मैं नीचे पीएचपी समारोह का इस्तेमाल किया है जो पिछले महीने प्राप्त करने के लिए, पीएचपी

$currmonth = date('m', strtotime('-1 month')); 

यह ठीक काम कर रहा था और मैं कल तक के मूल्य में हो रही थी। आज मई 3112 (मई माह का अंतिम दिन), मैंने देखा कि समारोह केवल वर्तमान माह लौटाता है। वह है। क्या कोई अन्य वैकल्पिक कार्य है जो पिछले महीने सटीक रूप से लौटाता है।

उत्तर

2

strtotime("first day of last month") आज़माएं।

first day of के रूप में विस्तृत here.

2

सचमुच 'पिछले महीने के पहले दिन' के लिए strtotime पूछना महत्वपूर्ण हिस्सा है इस यकीन है कि यह सही महीने का चयन करता है बनाता है: -

$currmonth = date("m", strtotime("first day of previous month")); 
2

आप उपयोग कर सकते हैं दिनांक समय वर्ग के साथ OOP और संशोधित विधि:

$now = new DateTime(); 
$previousMonth = $now->modify('first day of previous month'); 
echo $previousMonth->format('m'); 
+0

निश्चित रूप से सबसे अच्छा समाधान। Https://stackoverflow.com/questions/45110773/php-get-the-number-of-the-current-and-the-month- पहले से और पढ़ें –

2

strtotime()सही काम करता है। समस्या यह है कि आप इसे वापस करने के लिए कहते हैं।

"-1 महीने""पिछले महीने" जैसा नहीं है। यह जैसा है "वर्तमान माह से 1 घटाएं और फिर परिणाम को सामान्य करें"

2017-05-31 पर, वर्तमान माह से 1 घटाकर 2017-04-31 जो वैध दिनांक नहीं है। सामान्यीकरण के बाद, यह 2017-05-01 बन जाता है, इसलिए परिणाम आपको मिलता है।

आपको आवश्यक मूल्य प्राप्त करने के एक से अधिक तरीके हैं। उदाहरण के लिए:

// Today 
$now = new DateTime('now'); 
// Create a date interval string to go back to the first day of the previous month 
$int = sprintf('P1M%dD', $now->format('j')-1); 
// Get the first day of the previous month as DateTime 
$fdopm = $now->sub(new DateInterval($int)); 
// Verify it works 
echo($fdopm->format('Y-m-d')); 

// On 2017-05-31 it should print: 
// 2017-04-01 
0

यदि आपको पिछले महीने की महीने की संख्या प्राप्त करने की आवश्यकता है, तो निम्नलिखित पर्याप्त होना चाहिए।

$m = idate("m") - 1; 
// wrap to previous year 
if ($m < 1) { 
    $m = 12 - abs($m) % 12; 
} 

यह अनियंत्रित महीनों के मनमाना संख्या के साथ काम करता है।