2010-05-14 13 views
94

मैं एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो जांच करेगा कि वर्तमान दिनांक/समय 05/15/2010 at 4PMमैं कैसे जांच सकता हूं कि वर्तमान दिनांक/समय एक निर्धारित दिनांक/समय से पहले है या नहीं?

मैं इस चेक को करने के लिए PHP की दिनांक() फ़ंक्शन का उपयोग कैसे कर सकता हूं?

उत्तर

5

चेक PHP के strtotime समारोह एक टाइमस्टैम्प करने के लिए अपने निर्धारित तिथि/समय परिवर्तित करने के लिए: http://php.net/manual/en/function.strtotime.php

strtotime यदि आपका दिनांक/समय प्रारूप सही ढंग से नहीं संभाल कर सकते हैं ("4:00 PM" शायद काम करते हैं लेकिन नहीं होगा "पर 4 पीएम "), आपको स्ट्रिंग-फ़ंक्शंस का उपयोग करने की आवश्यकता होगी, उदाहरण के लिए अपने प्रारूप को पार्स/सही करने के लिए substr और किसी अन्य फ़ंक्शन के माध्यम से अपना टाइमस्टैम्प पुनर्प्राप्त करें, उदा। mktime

फिर वर्तमान दिनांक/समय (if ($calulated_timestamp > time()) { /* date in the future */ }) के साथ परिणामस्वरूप टाइमस्टैम्प की तुलना करें ताकि यह निर्धारित किया जा सके कि सेट दिनांक/समय अतीत या भविष्य में है या नहीं।

मैं दिनांक/समय-कार्यों पर PHP-दस्तावेज़ पढ़ने और सुझाव देने के बाद अपने कुछ स्रोत-कोड के साथ यहां वापस आने का सुझाव देता हूं।

+0

देख इवर Koster के जवाब –

176

पीएचपी> = 5.2.0 आप इस तरह के रूप DateTime वर्ग का उपयोग कर सकते के बाद से:

if (new DateTime() > new DateTime("2010-05-15 16:00:00")) { 
    # current time is greater than 2010-05-15 16:00:00 and thus in the past 
} 

स्ट्रिंग DateTime constructor के लिए पारित according to these rules पार्स किया गया है।


ध्यान दें कि यह भी time और strtotime कार्यों का उपयोग करना संभव है। See original answer

+4

टाइमस्टैम्प भी कुछ सीमाएं संभोग, और कुछ कीड़े है, उदाहरण के लिए एक टाइमस्टैम्प 1970 से पहले एक तारीख को संभाल नहीं कर सकते हैं और 2038 के बाद (इवर कोस्टर का जवाब देखें) –

+0

कमाल का जवाब! :) –

+0

यदि आप यूटीसी तिथियों (जैसा कि आपको करना चाहिए) का उपयोग कर रहे हैं, तो हम अक्सर किसी दिनांक पैरामीटर के साथ नए डेटटाइम() के दुरुपयोग को देखते हैं, तो नई डेटटाइम ("अब", नई डेटटाइमज़ोन ('यूटीसी') का उपयोग करना पसंद करते हैं। यह आपके ऐप को तिथियों में गलत समझने योग्य बग से रोक देगा। मैं आपको इसे एक फ़ंक्शन स्थैतिक चर, एक कक्षा स्थिर या कहीं भी अपनी चल रही प्रक्रिया में संग्रहीत करने की सलाह देता हूं ... – Loenix

75

DateTime कक्षा भी है जो तुलना ऑपरेटर के लिए एक कार्य लागू करती है।

// $now = new DateTime(); 
$dtA = new DateTime('05/14/2010 3:00PM'); 
$dtB = new DateTime('05/14/2010 4:00PM'); 

if ($dtA > $dtB) { 
    echo 'dtA > dtB'; 
} 
else { 
    echo 'dtA <= dtB'; 
} 
+0

इसके लिए फ़ंक्शन क्या कार्यान्वित करता है? –

6

डेटटाइम ऑब्जेक्ट रेंज अतीत में लगभग 2 9 2 अरब साल से भविष्य में समान है। टाइमस्टैम्प फ़ंक्शन की सीमा होती है (यदि मुझे सही याद है तो 1 9 70 से 2038 तक शुरू होता है)।

1

मैं इस तिथि की तुलना और जरूरत है कुछ को समायोजित के साथ एक समस्या थी

function getDatetimeNow() { 
    $tz_object = new DateTimeZone('Europe/Belgrade'); 
    $datetime = new DateTime(); 
    $datetime->setTimezone($tz_object); 
    return $datetime->format('Y\-m\-d\ h:i:s'); 
} 

$currentDate = getDatetimeNow(); 

$dtA = new DateTime($currentDate); 
$dtB = new DateTime($date); 

if ($dtA > $dtB) { 
    $active = 0; 
    return $active; 
} 
else { 
    $active = 1; 
    return $active; 
} 
संबंधित मुद्दे

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