2009-03-17 16 views
20

एक निश्चित तारीख को देखते हुए, यह निर्धारित करने का सबसे आसान तरीका क्या है कि उस तारीख तक (PHP में) कितने दिन? मैं एक गिनती विजेट बनाने की कोशिश कर रहा हूं, धन्यवाद!एक्स-वाई-जेड तिथि तक कितने दिन?

उत्तर

45
<?php 
$cdate = mktime(0, 0, 0, 12, 31, 2009, 0); 
$today = time(); 
$difference = $cdate - $today; 
if ($difference < 0) { $difference = 0; } 
echo "There are ". floor($difference/60/60/24)." days remaining"; 
?> 
+1

के लिए धन्यवाद इस! मेरी समस्या हल हो गई :) – yanike

+1

यह वास्तव में आपकी परिभाषा "दिन तक" पर निर्भर करता है। उदाहरण के लिए यह स्निपेट मुझे बताता है कि नया साल पूर्व 34 दिन दूर है, और वोल्फ्राम अल्फा, गूगल, सिरी, और बस मुझे लगता है कि हर दूसरी साइट मुझे 35 दिन बता रही है। FWIW – AlBeebe

+0

@AlBeebe तो बस +1 जोड़ें। इसके बारे में इतना मुश्किल क्या है? – Devfly

8

तिथियों को पूर्णांक के रूप में न मानें। अपने डेटाबेस का प्रयोग करें, जिसमें कैलेंडर्स/समय से निपटने के लिए अच्छा समर्थन है।

select datediff("2009-11-12", now()) 
+2

यूनिक्स टाइमस्टैम्प एफटीडब्ल्यू – andufo

22

schnaader के जवाब में विस्तार करते हुए, यहाँ एक एक लाइनर समारोह है कि एक पैरामीटर के रूप में एक तिथि स्ट्रिंग लेता है, लेकिन केवल दिनों की संख्या देता है:

<?php 
function days_until($date){ 
    return (isset($date)) ? floor((strtotime($date) - time())/60/60/24) : FALSE; 
} 
?> 
+0

धन्यवाद! इससे मुझे बहुत मदद मिली और तारीख से दिनों की संख्या प्राप्त करने के लिए एक इलाज किया। –

+0

धन्यवाद! मैं एक ऐसे व्यक्ति की तलाश में था जो नकारात्मक देता है, इससे बहुत मदद मिली! – pattyd

+1

किसी कारण से कल -2 है ..... क्या हुआ? – pattyd

7

दिन मिनट और सेकंड प्रारूप:

// current time 
$today = new DateTime(format_date(time(), 'custom', 'd M Y H:i:s')); 
// date to which we want to compare (A Drupal field in my case). 
$appt = new DateTime(format_date($yourdate_is_timestamp, 'custom', 'd M Y H:i:s')); 

// Months 
$months_until_appt = $appt->diff($today)-> m; 
// days 
$days_until_appt = $appt->diff($today)-> days; 
// hours 
$hours_until_appt = $appt->diff($today)-> h; 
// minutes 
$minutes_until_appt = $appt->diff($today)-> i; 
// seconds 
$seconds_until_appt = $appt->diff($today)-> s; 

echo 'days until: ' . $days_until_appt; 
echo 'hours until: ' . $hours_until_appt; 
echo 'minutes until: ' . $minutes_until_appt; 
echo 'seconds until: ' . $seconds_until_appt; 
+0

'डेटटाइम 'वर्ग एफटीडब्ल्यू –

+0

http://php.net/manual/en/ref.datetime.php' -> दिनों' (उदाहरण के लिए) वैध वर्ग नहीं है तरीका। क्या आप कृपया अपने कोड को '-> प्रारूप (' डी ') ',' -> प्रारूप (' एम ')', आदि का उपयोग करने के लिए संशोधित कर सकते हैं, इसलिए यह उन लोगों के लिए अधिक स्पष्ट है? – Wes

+0

रिकॉर्ड के लिए - मैंने 'डेटटाइम' के उपयोग के लिए अपडेट किया - समाधान में इस्तेमाल किए गए 'डेटटाइम' का उपयोग करके स्वीकृत उत्तर पर विश्वास नहीं कर सकता। – Wes

-1

मैं बस अपने कोड में एक लाइव ऐप के लिए आया हूं जहां सिस्टम आज और कल के रूप में गलत तरीके से माना जाता है। हम अभी ब्रिटिश ग्रीष्मकालीन समय में गए हैं और इससे हमारे ऐप के साथ समस्या आई है।

मैं अब निम्नलिखित है, जो मुझे सही परिणाम दे रहा है उपयोग कर रहा हूँ:

function days_away_to($dt) { 
    $mkt_diff = strtotime($dt) - time(); 
    return floor($mkt_diff/60/60/24) + 1; # 0 = today, -1 = yesterday, 1 = tomorrow 
} 
बेशक

सबसे अच्छा समाधान के लिए आगे जा रहा है DATETIME, वर्ग का उपयोग कर ...

+1

यह वही कोड है जो [पहले से ही यहां पोस्ट किया गया था] (http://stackoverflow.com/a/8807610/447356) और आपने अभी परिवर्तनीय नाम बदल दिए हैं। -1 अन्य लोगों के काम के लिए प्रतिनिधि पाने और अपना समय बर्बाद करने की कोशिश करने के लिए। –

+0

धन्यवाद एसडब्ल्यू लेकिन दुर्भाग्य से यह समाधान मेरे लिए काम नहीं करता है: यह मुझे 2014-03-31 के लिए 0 दे रहा है, मुझे बता रहा है कि आज की तारीख है (यह अब 30 मार्च है)।मैंने +1 जोड़ा है, जो इसे मेरे लिए सुधारता है। –

+0

तो आपको उस अन्य उत्तर से लिंक करके अपनी पोस्ट में इसे हाइलाइट करना चाहिए और समझाया जाना चाहिए कि आपने इसे काम करने के लिए अभी जोड़ा है। कृपया संपादन करें और मुझे बताएं। –

संबंधित मुद्दे