PHP का उपयोग करके दो तिथियों के बीच दिनों की संख्या कैसे पता करें?
(new DateTime("2010-01-11"))->diff(new DateTime("2019-08-19"))->days;
PHP का उपयोग करके दो तिथियों के बीच दिनों की संख्या कैसे पता करें?
(new DateTime("2010-01-11"))->diff(new DateTime("2019-08-19"))->days;
जवाबों:
$now = time(); // or your date as well
$your_date = strtotime("2010-01-31");
$datediff = $now - $your_date;
echo round($datediff / (60 * 60 * 24));
$your_date-$now
यदि आप एक सकारात्मक पूर्णांक वापस करने के लिए भविष्य की तारीख चाहते हैं, तो आपको उपयोग करना चाहिए ।
यदि आप उपयोग कर रहे हैं PHP 5.3 >
, तो यह अंतर की गणना करने का सबसे सटीक तरीका है:
$earlier = new DateTime("2010-07-06");
$later = new DateTime("2010-07-09");
$diff = $later->diff($earlier)->format("%a");
$date1
पूर्वकाल के समय नकारात्मक $date2
) की आवश्यकता है, तो $diff = $date2->diff($date1)->format("%r%a");
इसके बजाय उपयोग करें ।
DateTime("2010-07-06")
यह Y-m-d
या Y-d-m
?, DateTime
पैरामीटर का प्रारूप क्या है । कौन सा दिन है?
PHP संस्करण 5.3 और ऊपर से, अंतर प्राप्त करने के लिए नई तिथि / समय फ़ंक्शन जोड़े गए हैं:
$datetime1 = new DateTime("2010-06-20");
$datetime2 = new DateTime("2011-06-22");
$difference = $datetime1->diff($datetime2);
echo 'Difference: '.$difference->y.' years, '
.$difference->m.' months, '
.$difference->d.' days';
print_r($difference);
नीचे के रूप में परिणाम:
Difference: 1 years, 0 months, 2 days
DateInterval Object
(
[y] => 1
[m] => 0
[d] => 2
[h] => 0
[i] => 0
[s] => 0
[invert] => 0
[days] => 367
)
आशा है ये मदद करेगा !
अपनी तारीखों को यूनिक्स टाइमस्टैम्प में परिवर्तित करें, फिर एक को दूसरे से अलग करें। यह आपको सेकंड में अंतर देगा, जिसे आप 86400 (एक दिन में सेकंड की राशि) से विभाजित करते हैं, जिससे आपको उस सीमा में लगभग एक दिन की राशि मिलती है।
यदि आपकी तारीखें प्रारूप में हैं 25.1.2010
, 01/25/2010
या 2010-01-25
, आप strtotime
फ़ंक्शन का उपयोग कर सकते हैं :
$start = strtotime('2010-01-25');
$end = strtotime('2010-02-20');
$days_between = ceil(abs($end - $start) / 86400);
ceil
अगले पूर्ण दिन तक दिनों की मात्रा का उपयोग करना । floor
इसके बजाय यदि आप उन दो तिथियों के बीच पूरे दिनों की राशि प्राप्त करना चाहते हैं तो उपयोग करें ।
यदि आपकी तिथियां पहले से ही यूनिक्स टाइमस्टैम्प प्रारूप में हैं, तो आप कनवर्ट करना छोड़ सकते हैं और केवल $days_between
भाग कर सकते हैं। अधिक विदेशी दिनांक स्वरूपों के लिए, आपको इसे सही करने के लिए कुछ कस्टम पार्सिंग करनी पड़ सकती है।
$day
और UNIX टाइमस्टैम्प पर 1PM पर अंतर $day+1
हमेशा 86400 सेकंड में नहीं होता है, जो टाइमस्टोन में जीएसटी का निरीक्षण करते हैं। यह 24 घंटे के बजाए 23 या 25 घंटे का समय हो सकता है।
time()
। यदि आप करते हैं, तो तैयार रहें इसकी 98.0825% विश्वसनीयता आपको विफल करनी चाहिए। डेटटाइम (या कार्बन) का उपयोग करें।सही जवाब Saksham गुप्ता (अन्य उत्तर भी सही हैं) द्वारा दिए गए एक है:
$date1 = new DateTime('2010-07-06');
$date2 = new DateTime('2010-07-09');
$days = $date2->diff($date1)->format('%a');
या एक-लाइनर के रूप में प्रक्रियात्मक रूप से:
/**
* Number of days between two dates.
*
* @param date $dt1 First date
* @param date $dt2 Second date
* @return int
*/
function daysBetween($dt1, $dt2) {
return date_diff(
date_create($dt2),
date_create($dt1)
)->format('%a');
}
एक चेतावनी के साथ: '% a' दिनों की निरपेक्ष संख्या को इंगित करता है । यदि आप इसे एक हस्ताक्षरित पूर्णांक के रूप में चाहते हैं, अर्थात जब दूसरी तारीख पहली से पहले होती है, तो आपको '% r' उपसर्ग (यानी format('%r%a')
) का उपयोग करने की आवश्यकता होती है ।
यदि आप वास्तव में UNIX टाइमस्टैम्प का उपयोग करते हैं, तो नीचे दिए गए अधिकांश नुकसानों से बचने के लिए GMT का समय क्षेत्र निर्धारित करें।
UNIX टाइमस्टैम्प (और दिनों में बदलने के लिए 86400) का उपयोग करते हुए अधिकांश उत्तर दो धारणाएं बनाते हैं, जो एक साथ डालते हैं, गलत परिणाम और सूक्ष्म बग के साथ परिदृश्यों को जन्म दे सकते हैं जो ट्रैक करना मुश्किल हो सकता है, और यहां तक कि दिन, सप्ताह या महीनों में उत्पन्न हो सकते हैं। एक सफल तैनाती। ऐसा नहीं है कि समाधान काम नहीं करता है - यह काम करता है। आज। लेकिन यह कल काम करना बंद कर सकता है।
पहली गलती यह विचार नहीं कर रही है कि जब पूछा गया, "कल से कितने दिन बीत गए?", एक कंप्यूटर सच्चाई का जवाब दे सकता है यदि वर्तमान और तत्काल के बीच "कल" द्वारा संकेत दिया गया एक दिन से कम हो गया है।
आमतौर पर जब एक "दिन" को UNIX टाइमस्टैम्प में परिवर्तित किया जाता है, तो जो प्राप्त होता है, उस विशेष दिन की मध्यरात्रि के लिए टाइमस्टैम्प होता है।
इसलिए 1 अक्टूबर से 15 अक्टूबर के मध्य के बीच, पंद्रह दिन बीत चुके हैं। 1 अक्टूबर के 13:00 और 15 अक्टूबर के 14:55 के बीच, पंद्रह दिनों के माइनस 5 मिनट बीत चुके हैं, और floor()
अंतर्निहित पूर्णांक रूपांतरण का उपयोग या करने वाले अधिकांश समाधान एक दिन कम की अपेक्षा करेंगे ।
तो, "कितने दिन पहले Ymd H: i: s" था? निकलेगा गलत जवाब ।
दूसरी गलती एक दिन 86400 सेकंड के बराबर है। यह लगभग हमेशा सच होता है - अक्सर ऐसा होता है कि यह उस समय की अनदेखी नहीं करता है। लेकिन लगातार दो मिडनाइट्स के बीच सेकंड में दूरी निश्चित रूप से वर्ष में कम से कम दो बार 86400 नहीं होती है जब दिन के समय की बचत का समय खेल में आता है। एक डीएसटी सीमा के पार दो तारीखों की तुलना करने से गलत उत्तर मिलेगा।
इसलिए, भले ही आप एक निश्चित समय के लिए सभी डेट टाइमस्टैम्प्स को मजबूर करने के "हैक" का उपयोग करते हैं, मध्यरात्रि कहें (यह भी विभिन्न भाषाओं और रूपरेखाओं द्वारा किया जाता है जब आप केवल दिन-महीने-वर्ष निर्दिष्ट करते हैं और घंटे-मिनट-सेकंड भी नहीं; डेटाबेस (जैसे MySQL) में DATE प्रकार के साथ ही हैप्पीनेस, व्यापक रूप से उपयोग किया जाने वाला सूत्र
(unix_timestamp(DATE2) - unix_timestamp(DATE1)) / 86400
या
floor(time() - strtotime($somedate)) / 86400
वर्ष के समान DST सेगमेंट में DATE1 और DATE2 के होने पर 17, वापस लौटेंगे; लेकिन यह 17.042, और बदतर अभी भी, 16.958 वापस आ सकता है। फर्श का उपयोग () या पूर्णांक के लिए किसी भी निहित ट्रंकेशन को तब परिवर्तित किया जाएगा जो 17 से 16 तक होना चाहिए था। अन्य परिस्थितियों में, "$ दिन> 17" जैसे भाव true
17.042 के लिए वापस आ जाएंगे, भले ही यह इंगित करता हो कि बीता हुआ दिन गिनती 18 है।
और ऐसी चीजें और भी बदसूरत हो जाती हैं क्योंकि इस तरह के कोड प्लेटफार्मों में पोर्टेबल नहीं होते हैं , क्योंकि उनमें से कुछ लीप सेकंड लागू कर सकते हैं और कुछ नहीं हो सकते हैं । उन प्लेटफार्मों पर जो करते हैं , दो तिथियों के बीच का अंतर 86400 नहीं बल्कि 86401, या शायद 86399 होगा। इसलिए कोड जो मई में काम किया और वास्तव में सभी परीक्षण अगले जून में टूटेंगे जब 12.99999 दिनों को 13. दो तिथियों के बजाय 12 दिन माना जाएगा। 2015 में काम किया है कि 2017 में काम नहीं करेगा - एक ही तारीख, और न ही वर्ष एक लीप वर्ष है। लेकिन 2018-03-01 और 2017-03-01 के बीच, उन प्लेटफार्मों पर जो देखभाल करते हैं, 365 के बजाय 366 दिन बीत चुके होंगे, 2018 को एक लीप वर्ष (जो यह नहीं है) बना देगा।
तो अगर आप वास्तव में UNIX टाइमस्टैम्प का उपयोग करना चाहते हैं:
round()
फ़ंक्शन का उपयोग समझदारी से करें, नहीं floor()
।
एक विकल्प के रूप में, D1-M1-YYY1 और D2-M2-YYY2 के बीच अंतर की गणना न करें। उन तिथियों को वास्तव में D1-M1-YYY1 00:00:00 और D2-M2-YYY2 00:00:00 माना जाएगा। बल्कि, D1-M1-YYY1 22:30:00 और D2-M2-YYY2 04:30:00 के बीच कनवर्ट करें। आपको हमेशा लगभग बीस घंटे का समय मिलेगा। यह इक्कीस घंटे या उन्नीस हो सकता है, और शायद अठारह घंटे, उनतीस मिनट छत्तीस सेकंड। कोई बात नहीं। यह एक बड़ा मार्जिन है जो भविष्य के लिए भविष्य के लिए वहाँ रहेगा और सकारात्मक रहेगा। अब आप इसे floor()
सुरक्षा में छोटा कर सकते हैं ।
जादू कांस्टेंट से बचने के लिए, गोल कीचड़ और एक रखरखाव ऋण से बचने का सही समाधान है
एक समय पुस्तकालय (डेटाइम, कार्बन, जो भी हो) का उपयोग करें; अपना रोल मत करो
डीएसटी सीमाओं के पार, लीप वर्षों में, लीप सेकंड में, और इसी तरह, साथ ही साथ सामान्य तिथियों में - वास्तव में बुरी तारीख विकल्पों का उपयोग करके व्यापक परीक्षण के मामले लिखें । आदर्श रूप से (डेटाइम के लिए कॉल तेज़ हैं !) चार पूरे साल की (और एक दिन की) तारीखों को तार से, क्रमिक रूप से जोड़कर उत्पन्न करते हैं , और सुनिश्चित करते हैं कि पहले दिन और परीक्षण किए जा रहे दिन के बीच का अंतर एक-एक करके लगातार बढ़ता जाता है। यह सुनिश्चित करेगा कि यदि निम्न-स्तरीय दिनचर्या और लीप सेकंड फिक्स में कुछ भी परिवर्तन कहर बरपाए, तो कम से कम आपको पता चल जाएगा ।
उन परीक्षणों को नियमित रूप से बाकी परीक्षण सूट के साथ चलाएं। वे मिलीसेकंड की बात कर रहे हैं, और आप सचमुच सिर खुजलाने के घंटे बचा सकते हैं ।
funcdiff
नीचे दिए गए फ़ंक्शन किसी एक समाधान को लागू करता है (जैसा कि ऐसा होता है, स्वीकृत एक) वास्तविक दुनिया के परिदृश्य में।
<?php
$tz = 'Europe/Rome';
$yearFrom = 1980;
$yearTo = 2020;
$verbose = false;
function funcdiff($date2, $date1) {
$now = strtotime($date2);
$your_date = strtotime($date1);
$datediff = $now - $your_date;
return floor($datediff / (60 * 60 * 24));
}
########################################
date_default_timezone_set($tz);
$failures = 0;
$tests = 0;
$dom = array ( 0, 31, 28, 31, 30,
31, 30, 31, 31,
30, 31, 30, 31 );
(array_sum($dom) === 365) || die("Thirty days hath September...");
$last = array();
for ($year = $yearFrom; $year < $yearTo; $year++) {
$dom[2] = 28;
// Apply leap year rules.
if ($year % 4 === 0) { $dom[2] = 29; }
if ($year % 100 === 0) { $dom[2] = 28; }
if ($year % 400 === 0) { $dom[2] = 29; }
for ($month = 1; $month <= 12; $month ++) {
for ($day = 1; $day <= $dom[$month]; $day++) {
$date = sprintf("%04d-%02d-%02d", $year, $month, $day);
if (count($last) === 7) {
$tests ++;
$diff = funcdiff($date, $test = array_shift($last));
if ((double)$diff !== (double)7) {
$failures ++;
if ($verbose) {
print "There seem to be {$diff} days between {$date} and {$test}\n";
}
}
}
$last[] = $date;
}
}
}
print "This function failed {$failures} of its {$tests} tests between {$yearFrom} and {$yearTo}.\n";
परिणाम है,
This function failed 280 of its 14603 tests
यह वास्तव में कुछ महीने पहले हुआ था। एक सरल प्रोग्रामर ने कई माइक्रोसेकंड को एक गणना से बचाने का फैसला किया, जो कि कुख्यात "(मिडनाइटऑफडेट-मिडनाइटऑफडेटा) / 86400" कोड "को कई स्थानों पर प्लग करके, लगभग तीस सेकंड लेता है। यह एक अनुकूलन के रूप में इतना स्पष्ट था कि उसने इसका दस्तावेजीकरण भी नहीं किया, और अनुकूलन ने एकीकरण परीक्षणों को पारित कर दिया और कई महीनों तक कोड में दुबका रहा, सभी किसी का ध्यान नहीं गया।
यह एक ऐसे कार्यक्रम में हुआ जो कई शीर्ष-विक्रय सेल्समैन के लिए मजदूरी की गणना करता है, जिनमें से कम से कम पांच लोगों की प्रोग्रामर टीम को एक साथ ले जाने की तुलना में एक बहुत अधिक सुखद है। कुछ महीने पहले एक दिन, उन कारणों के लिए जो कम बात करते हैं, बग मारा गया - और उन लोगों में से कुछ को वसा आयोगों के एक पूरे दिन में कमी मिली। वे निश्चित रूप से नहीं थे खुश थे।
असीम रूप से बदतर, वे (पहले से ही बहुत कम) विश्वास खो चुके थे कि कार्यक्रम में उन्हें सरप्राइज्ड तरीके से डिजाइन नहीं किया जा रहा था, और दिखावा किया - और प्राप्त किया - परीक्षण मामलों के साथ एक पूर्ण, विस्तृत कोड समीक्षा और आम आदमी की शर्तों (और बहुत कुछ) में टिप्पणी की निम्नलिखित हफ्तों में लाल कालीन उपचार)।
मैं क्या कह सकता हूं: प्लस साइड पर, हमने बहुत सारे तकनीकी ऋणों से छुटकारा पा लिया, और एक स्पेगेटी गड़बड़ के कई टुकड़ों को फिर से लिखना और फिर से लिखना शुरू कर दिया, जो झूले के 90 के दशक में एक कॉबल उल्लंघन के लिए वापस सुनाई दिए। कार्यक्रम निस्संदेह अब बेहतर चलता है, और कुछ भी गड़बड़ होने पर जल्दी शून्य होने के लिए बहुत अधिक डिबगिंग जानकारी है। मेरा अनुमान है कि बस यह आखिरी एक चीज भविष्य के लिए प्रति माह एक या दो आदमी-दिन बचाएगी।
माइनस साइड पर, पूरे ब्रूहा ने कंपनी को € 200,000 अप फ्रंट - प्लस फेस, प्लस निस्संदेह कुछ बार्गेनिंग पावर (और, इसलिए, अभी और अधिक पैसा) खर्च किया।
"अनुकूलन" के लिए जिम्मेदार व्यक्ति ने आपदा से पहले एक साल पहले नौकरी बदल दी थी, लेकिन अभी भी उसे नुकसान के लिए मुकदमा करने के लिए बात की गई थी। और यह ऊपरी पारितंत्रों के साथ अच्छी तरह से नहीं चला था कि यह "अंतिम आदमी की गलती" थी - यह हमारे लिए मामले की सफाई के लिए एक सेट-अप की तरह लग रहा था, और अंत में, हम अभी भी डॉगहाउस में हैं और टीम में से एक को छोड़ने की योजना बना रहा है।
सौ में से निन्यानबे बार, "86400 हैक" निर्दोष रूप से काम करेगा। (उदाहरण के लिए PHP में, strtotime()
DST को नजरअंदाज कर देंगे और रिपोर्ट करेंगे कि अक्टूबर के अंतिम शनिवार की मध्यरात्रि और उसके बाद के सोमवारों के बीच, बिल्कुल 2 * 24 * 60 * 60 सेकंड बीत चुके हैं, भले ही वह स्पष्ट रूप से सच न हो ... और दो गलतियाँ खुशी से एक अधिकार बनायेगी)।
यह, देवियों और सज्जनों, एक उदाहरण था जब यह नहीं था। एयर बैग और सीट बेल्ट के साथ, आप शायद कभी नहीं वास्तव में जटिलता की जरूरत है (और उपयोग में आसानी) का DateTime
या Carbon
। लेकिन दिन आप जब हो सकता है (या दिन आप करना होगा जब साबित आप इस बारे में सोचा) रात में एक चोर के रूप में आ जाएगा। तैयार रहो।
days between two days in php
या इसी तरह की खोज करके यहाँ आया है , क्योंकि जीवन में हर चीज़ को लिखना बहुत कम है।
Date_diff का उपयोग करना आसान है
$from=date_create(date('Y-m-d'));
$to=date_create("2013-03-15");
$diff=date_diff($to,$from);
print_r($diff);
echo $diff->format('%R%a days');
$diff
इस मामले में चर) का स्पष्ट उपयोग नहीं है । कुछ इस प्रकार है if ($diff->days > 30) { [doyourstuff]; }
वस्तु उन्मुख शैली:
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
प्रक्रियात्मक शैली:
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
इसका उपयोग :)
$days = (strtotime($endDate) - strtotime($startDate)) / (60 * 60 * 24);
print $days;
अब यह काम कर रहा है
खैर, चयनित उत्तर सबसे सही नहीं है क्योंकि यह यूटीसी के बाहर विफल हो जाएगा। समय-सारणी ( सूची ) के आधार पर "24 घंटे" के बिना "दिन बनाने" में समय समायोजन हो सकता है, और इससे गणना (60 * 60 * 24) विफल हो जाएगी।
यहाँ यह इसका एक उदाहरण है:
date_default_timezone_set('europe/lisbon');
$time1 = strtotime('2016-03-27');
$time2 = strtotime('2016-03-29');
echo floor( ($time2-$time1) /(60*60*24));
^-- the output will be **1**
तो सही समाधान DateTime का उपयोग किया जाएगा
date_default_timezone_set('europe/lisbon');
$date1 = new DateTime("2016-03-27");
$date2 = new DateTime("2016-03-29");
echo $date2->diff($date1)->format("%a");
^-- the output will be **2**
दो तिथियों के बीच अंतर की गणना करें:
$date1=date_create("2013-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
echo $diff->format("%R%a days");
आउटपुट: ५:२ दिन
Date_diff () फ़ंक्शन दो DateTime ऑब्जेक्ट्स के बीच अंतर देता है।
आप बस के द्वारा दिनांक पा सकते हैं
<?php
$start = date_create('1988-08-10');
$end = date_create(); // Current time and date
$diff = date_diff( $start, $end );
echo 'The difference is ';
echo $diff->y . ' years, ';
echo $diff->m . ' months, ';
echo $diff->d . ' days, ';
echo $diff->h . ' hours, ';
echo $diff->i . ' minutes, ';
echo $diff->s . ' seconds';
// Output: The difference is 28 years, 5 months, 19 days, 20 hours, 34 minutes, 36 seconds
echo 'The difference in days : ' . $diff->days;
// Output: The difference in days : 10398
PHP में दो तिथियों के बीच दिनों की संख्या
function dateDiff($date1, $date2) //days find function
{
$diff = strtotime($date2) - strtotime($date1);
return abs(round($diff / 86400));
}
//start day
$date1 = "11-10-2018";
// end day
$date2 = "31-10-2018";
// call the days find fun store to variable
$dateDiff = dateDiff($date1, $date2);
echo "Difference between two dates: ". $dateDiff . " Days ";
आप नीचे दिए गए कोड को आज़मा सकते हैं:
$dt1 = strtotime("2019-12-12"); //Enter your first date
$dt2 = strtotime("12-12-2020"); //Enter your second date
echo abs(($dt1 - $dt2) / (60 * 60 * 24));
यदि आप प्रारंभ और समाप्ति तिथि के बीच सभी दिन प्रतिध्वनित करना चाहते हैं, तो मैं इसके साथ आया:
$startdatum = $_POST['start']; // starting date
$einddatum = $_POST['eind']; // end date
$now = strtotime($startdatum);
$your_date = strtotime($einddatum);
$datediff = $your_date - $now;
$number = floor($datediff/(60*60*24));
for($i=0;$i <= $number; $i++)
{
echo date('d-m-Y' ,strtotime("+".$i." day"))."<br>";
}
दो तिथियों के बीच के दिनों के अंतर को खोजने का सबसे आसान तरीका
$date1 = strtotime("2019-05-25");
$date2 = strtotime("2010-06-23");
$date_difference = $date2 - $date1;
$result = round( $date_difference / (60 * 60 * 24) );
echo $result;
// Change this to the day in the future
$day = 15;
// Change this to the month in the future
$month = 11;
// Change this to the year in the future
$year = 2012;
// $days is the number of days between now and the date in the future
$days = (int)((mktime (0,0,0,$month,$day,$year) - time(void))/86400);
echo "There are $days days until $day/$month/$year";
यहाँ मेरा सुधरा हुआ संस्करण है जो 2 वर्ष बीतने पर 1 वर्ष (s) 2 महीना (दिन) 25 दिन दिखाता है।
class App_Sandbox_String_Util {
/**
* Usage: App_Sandbox_String_Util::getDateDiff();
* @param int $your_date timestamp
* @param bool $hr human readable. e.g. 1 year(s) 2 day(s)
* @see http://stackoverflow.com/questions/2040560/finding-the-number-of-days-between-two-dates
* @see http://qSandbox.com
*/
static public function getDateDiff($your_date, $hr = 0) {
$now = time(); // or your date as well
$datediff = $now - $your_date;
$days = floor( $datediff / ( 3600 * 24 ) );
$label = '';
if ($hr) {
if ($days >= 365) { // over a year
$years = floor($days / 365);
$label .= $years . ' Year(s)';
$days -= 365 * $years;
}
if ($days) {
$months = floor( $days / 30 );
$label .= ' ' . $months . ' Month(s)';
$days -= 30 * $months;
}
if ($days) {
$label .= ' ' . $days . ' day(s)';
}
} else {
$label = $days;
}
return $label;
}
}
$early_start_date = date2sql($_POST['early_leave_date']);
$date = new DateTime($early_start_date);
$date->modify('+1 day');
$date_a = new DateTime($early_start_date . ' ' . $_POST['start_hr'] . ':' . $_POST['start_mm']);
$date_b = new DateTime($date->format('Y-m-d') . ' ' . $_POST['end_hr'] . ':' . $_POST['end_mm']);
$interval = date_diff($date_a, $date_b);
$time = $interval->format('%h:%i');
$parsed = date_parse($time);
$seconds = $parsed['hour'] * 3600 + $parsed['minute'] * 60;
// display_error($seconds);
$second3 = $employee_information['shift'] * 60 * 60;
if ($second3 < $seconds)
display_error(_('Leave time can not be greater than shift time.Please try again........'));
set_focus('start_hr');
set_focus('end_hr');
return FALSE;
}
<?php
$date1=date_create("2013-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
echo $diff->format("%R%a days");
?>
उपरोक्त कोड का उपयोग बहुत ही सरल है। धन्यवाद।
function get_daydiff($end_date,$today)
{
if($today=='')
{
$today=date('Y-m-d');
}
$str = floor(strtotime($end_date)/(60*60*24)) - floor(strtotime($today)/(60*60*24));
return $str;
}
$d1 = "2018-12-31";
$d2 = "2018-06-06";
echo get_daydiff($d1, $d2);
इस सरल कार्य का उपयोग करना। समारोह की घोषणा करें
<?php
function dateDiff($firstDate,$secondDate){
$firstDate = strtotime($firstDate);
$secondDate = strtotime($secondDate);
$datediff = $firstDate - $secondDate;
$output = round($datediff / (60 * 60 * 24));
return $output;
}
?>
और इस फ़ंक्शन को इस तरह से कॉल करें जहां आप चाहते हैं
<?php
echo dateDiff("2018-01-01","2018-12-31");
// OR
$firstDate = "2018-01-01";
$secondDate = "2018-01-01";
echo dateDiff($firstDate,$secondDate);
?>
$diff = strtotime('2019-11-25') - strtotime('2019-11-10');
echo abs(round($diff / 86400));
यदि आप MySql का उपयोग कर रहे हैं
function daysSince($date, $date2){
$q = "SELECT DATEDIFF('$date','$date2') AS days;";
$result = execQ($q);
$row = mysql_fetch_array($result,MYSQL_BOTH);
return ($row[0]);
}
function execQ($q){
$result = mysql_query( $q);
if(!$result){echo ('Database error execQ' . mysql_error());echo $q;}
return $result;
}
कार्बन का उपयोग करके देखें
$d1 = \Carbon\Carbon::now()->subDays(92);
$d2 = \Carbon\Carbon::now()->subDays(10);
$days_btw = $d1->diffInDays($d2);
इसके अलावा आप उपयोग कर सकते हैं
\Carbon\Carbon::parse('')
दिए गए टाइमस्टैम्प स्ट्रिंग का उपयोग करके कार्बन तिथि की एक वस्तु बनाना।
सभी उत्तरों को देखते हुए मैं सभी PHP संस्करणों पर काम करने वाले सार्वभौमिक फ़ंक्शन की रचना करता हूं।
if(!function_exists('date_between')) :
function date_between($date_start, $date_end)
{
if(!$date_start || !$date_end) return 0;
if( class_exists('DateTime') )
{
$date_start = new DateTime( $date_start );
$date_end = new DateTime( $date_end );
return $date_end->diff($date_start)->format('%a');
}
else
{
return abs( round( ( strtotime($date_start) - strtotime($date_end) ) / 86400 ) );
}
}
endif;
सामान्य तौर पर, मैं 2 तारीखों के बीच के दिनों को खोजने के लिए 'डेटटाइम' का उपयोग करता हूं। लेकिन अगर किसी कारण से, कुछ सर्वर सेटअप में 'डेटटाइम' सक्षम नहीं है, तो यह 'स्ट्रेटोटाइम ()' के साथ सरल (लेकिन सुरक्षित नहीं) गणना का उपयोग करेगा।