मैं PHP में महीने का आखिरी दिन कैसे प्राप्त कर सकता हूं?
दिया हुआ:
$a_date = "2009-11-23"
मुझे 2009-11-30 चाहिए; और दिया गया
$a_date = "2009-12-23"
मुझे 2009-12-31 चाहिए।
मैं PHP में महीने का आखिरी दिन कैसे प्राप्त कर सकता हूं?
दिया हुआ:
$a_date = "2009-11-23"
मुझे 2009-11-30 चाहिए; और दिया गया
$a_date = "2009-12-23"
मुझे 2009-12-31 चाहिए।
जवाबों:
t
किसी दिए गए तारीख के महीने में कितने दिन मिलते हैं ( डॉक्सdate
देखें ):
$a_date = "2009-11-23";
echo date("Y-m-t", strtotime($a_date));
DateTime
: यदि आप कुछ इस तरह कर सकते हैं(new DateTime('2009-11-23'))->modify('last day of')
वर्ष 2038 के बाद strtotime () का उपयोग करने वाला कोड विफल हो जाएगा (जैसा कि इस धागे में पहले उत्तर में दिया गया है) उदाहरण के लिए निम्नलिखित का उपयोग करने का प्रयास करें:
$a_date = "2040-11-23";
echo date("Y-m-t", strtotime($a_date));
यह उत्तर देगा: 1970-01-31
इसलिए strtotime के बजाय, DateTime फ़ंक्शन का उपयोग किया जाना चाहिए। निम्नलिखित कोड वर्ष 2038 समस्या के बिना काम करेगा:
$d = new DateTime( '2040-11-23' );
echo $d->format( 'Y-m-t' );
strtotime
कोड मुझे यह परिणाम देता है: 2040-11-30
मुझे पता है कि यह थोड़ा देर से है, लेकिन मुझे लगता है PHP 5.3+
कि डेटटाइम क्लास का उपयोग करके ऐसा करने का एक और अधिक सुंदर तरीका है :
$date = new DateTime('now');
$date->modify('last day of this month');
echo $date->format('Y-m-d');
$date = DateTime::createFromFormat('m/d/Y', '1/10/2014');
PHP फ़ंक्शन cal_days_in_month () में भी बनाया गया है ?
"यह फ़ंक्शन निर्दिष्ट कैलेंडर के लिए वर्ष के महीने में दिनों की संख्या लौटाएगा।" http://php.net/manual/en/function.cal-days-in-month ।
echo cal_days_in_month(CAL_GREGORIAN, 11, 2009);
// = 30
यह काम करना चाहिए:
$week_start = strtotime('last Sunday', time());
$week_end = strtotime('next Sunday', time());
$month_start = strtotime('first day of this month', time());
$month_end = strtotime('last day of this month', time());
$year_start = strtotime('first day of January', time());
$year_end = strtotime('last day of December', time());
echo date('D, M jS Y', $week_start).'<br/>';
echo date('D, M jS Y', $week_end).'<br/>';
echo date('D, M jS Y', $month_start).'<br/>';
echo date('D, M jS Y', $month_end).'<br/>';
echo date('D, M jS Y', $year_start).'<br/>';
echo date('D, M jS Y', $year_end).'<br/>';
क्या गलत है - मेरे लिए सबसे सुरुचिपूर्ण उपयोग कर रहा है DateTime
मुझे आश्चर्य है कि मैं नहीं देखता DateTime::createFromFormat
, एक-लाइनर
$lastDay = \DateTime::createFromFormat("Y-m-d", "2009-11-23")->format("Y-m-t");
आप अगले महीने के पहले के लिए एक तारीख बना सकते हैं, और फिर उपयोग कर सकते हैं strtotime("-1 day", $firstOfNextMonth)
mktime(0, 0, 0, $month+1, 0, $year);
strtotime()
और mktime()
निराश हतोत्साहित है। महीने के किनारे पर तारीख निर्धारण और लीप ईयर कैलाकुलेशन जैसे ज्ञात कीड़े। चूंकि DateTime
उपलब्ध है, इसलिए आपको भविष्य में किसी भी समस्या से बचने के लिए इस वर्ग का उपयोग करना चाहिए। जैसा कि मेरे सामने कई बार कहा गया है, ये दोनों कार्य strtotime()
और mktime()
2038 के बाद विफल हो जाएंगे। यही कारण है कि मैं
यह प्रयास करें, यदि आप PHP 5.3+ का उपयोग कर रहे हैं,
$a_date = "2009-11-23";
$date = new DateTime($a_date);
$date->modify('last day of this month');
echo $date->format('Y-m-d');
अगले महीने अंतिम तिथि खोजने के लिए, इस प्रकार संशोधित करें,
$date->modify('last day of 1 month');
echo $date->format('Y-m-d');
और इसी तरह..
आपका समाधान यहाँ है ..
$lastday = date('t',strtotime('today'));
31
के लिए September
के रूप में आप जानते हैं कि सही नहीं है जो।
आप महीने के अंतिम दिन कई तरीकों से पा सकते हैं। लेकिन बस आप PHP strtotime () और date () फ़ंक्शन का उपयोग करके ऐसा कर सकते हैं। मुझे लगता है कि आपका अंतिम कोड कुछ इस तरह दिखाई देगा:
$a_date = "2009-11-23";
echo date('Y-m-t',strtotime($a_date));
लेकिन अगर आप PHP> = 5.2 का उपयोग कर रहे हैं, तो मैं दृढ़ता से सुझाव देता हूं कि आप नए डेटाइम ऑब्जेक्ट का उपयोग करें। नीचे दिए गए उदाहरण के लिए:
$a_date = "2009-11-23";
$date = new DateTime($a_date);
$date->modify('last day of this month');
echo $date->format('Y-m-d');
इसके अलावा, आप नीचे दिए गए अपने स्वयं के फ़ंक्शन का उपयोग करके इसे हल कर सकते हैं:
/**
* Last date of a month of a year
*
* @param[in] $date - Integer. Default = Current Month
*
* @return Last date of the month and year in yyyy-mm-dd format
*/
function last_day_of_the_month($date = '')
{
$month = date('m', strtotime($date));
$year = date('Y', strtotime($date));
$result = strtotime("{$year}-{$month}-01");
$result = strtotime('-1 second', strtotime('+1 month', $result));
return date('Y-m-d', $result);
}
$a_date = "2009-11-23";
echo last_day_of_the_month($a_date);
यदि आप PHP DateTime के लिए कार्बन एपीआई एक्सटेंशन का उपयोग करते हैं , तो आप महीने का अंतिम दिन प्राप्त कर सकते हैं:
$date = Carbon::now();
$date->addMonth();
$date->day = 0;
echo $date->toDateString(); // use toDateTimeString() to get date and time
$date->day = 0;
यदि आपके पास माहवार है तो महीने की अंतिम तारीख प्राप्त करें,
public function getLastDateOfMonth($month)
{
$date = date('Y').'-'.$month.'-01'; //make date of month
return date('t', strtotime($date));
}
$this->getLastDateOfMonth(01); //31
यहाँ एक पूर्ण कार्य है:
public function get_number_of_days_in_month($month, $year) {
// Using first day of the month, it doesn't really matter
$date = $year."-".$month."-1";
return date("t", strtotime($date));
}
यह निम्नलिखित उत्पादन होगा:
echo get_number_of_days_in_month(2,2014);
आउटपुट: 28
महीने के अंतिम दिन प्राप्त करने के तरीके हैं।
//to get last day of current month
echo date("t", strtotime('now'));
//to get last day from specific date
$date = "2014-07-24";
echo date("t", strtotime($date));
//to get last day from specific date by calendar
$date = "2014-07-24";
$dateArr=explode('-',$date);
echo cal_days_in_month(CAL_GREGORIAN, $dateArr[1], $dateArr[0]);
मुझे देर हो चुकी है लेकिन इसके लिए कुछ आसान तरीके बताए गए हैं:
$days = date("t");
$days = cal_days_in_month(CAL_GREGORIAN, date('m'), date('Y'));
$days = date("j",mktime (date("H"),date("i"),date("s"),(date("n")+1),0,date("Y")));
Mktime () का उपयोग करते हुए समय के सभी पहलुओं पर पूर्ण नियंत्रण के लिए मेरा जाना है ... IE
echo "<br> ".date("Y-n-j",mktime (date("H"),date("i"),date("s"),(11+1),0,2009));
दिन को 0 पर सेट करना और अपने महीने को 1 तक ले जाना आपको पिछले महीने का आखिरी दिन देगा। 0 और ऋणात्मक संख्याओं के अलग-अलग तर्क में समान प्रभाव होता है। PHP: mktime - मैनुअल
जैसा कि कुछ ने कहा है कि स्ट्रेटोटाइम जाने के लिए सबसे ठोस तरीका नहीं है और अगर कोई भी आसानी से बहुमुखी नहीं है, तो यह बहुत कम है।
मैं निम्नलिखित के रूप में cal_days_in_month के साथ strtotime का उपयोग कर रहा हूं:
$date_at_last_of_month=date('Y-m-d', strtotime('2020-4-1
+'.(cal_days_in_month(CAL_GREGORIAN,4,2020)-1).' day'));
मैं यहाँ मेरी दिनांक समय सहायक वर्ग में लपेटा है
https://github.com/normandqq/Date-Time-Helper
का उपयोग कर
$dateLastDay = Model_DTHpr::getLastDayOfTheMonth();
और हो गया
Mktime और दिनांक ('t') का उपयोग करने का दूसरा तरीका :
$dateStart= date("Y-m-d", mktime(0, 0, 0, 10, 1, 2016)); //2016-10-01
$dateEnd = date("Y-m-d", mktime(0, 0, 0, 11, 0, 2016)); //This will return the last day of october, 2016-10-31 :)
तो इस तरह से यह गणना करता है यदि यह 31,30 या 29 है
function first_last_day($string, $first_last, $format) {
$result = strtotime($string);
$year = date('Y',$result);
$month = date('m',$result);
$result = strtotime("{$year}-{$month}-01");
if ($first_last == 'last'){$result = strtotime('-1 second', strtotime('+1 month', $result)); }
if ($format == 'unix'){return $result; }
if ($format == 'standard'){return date('Y-m-d', $result); }
}
महीने का अंत पाने के लिए यह एक और अधिक सुंदर तरीका है:
$thedate = Date('m/d/Y');
$lastDayOfMOnth = date('d', mktime(0,0,0, date('m', strtotime($thedate))+1, 0, date('Y', strtotime($thedate))));
आप t
किसी विशेष महीने में दिन की संख्या प्राप्त करने के लिए " " तिथि फ़ंक्शन का उपयोग कर सकते हैं ।
कोड कुछ इस तरह होगा:
function lastDateOfMonth($Month, $Year=-1) {
if ($Year < 0) $Year = 0+date("Y");
$aMonth = mktime(0, 0, 0, $Month, 1, $Year);
$NumOfDay = 0+date("t", $aMonth);
$LastDayOfMonth = mktime(0, 0, 0, $Month, $NumOfDay, $Year);
return $LastDayOfMonth;
}
for($Month = 1; $Month <= 12; $Month++)
echo date("Y-n-j", lastDateOfMonth($Month))."\n";
कोड स्व-समझाया गया है। तो उम्मीद है कि यह मदद करता है।