यदि वर्तमान तिथि / समय एक निर्धारित तिथि / समय पिछले है तो मैं कैसे जांच सकता हूं?


115

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

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

जवाबों:


228

चूंकि PHP> = 5.2.2 आप DateTimeवर्ग का उपयोग इस तरह कर सकते हैं :

if (new DateTime() > new DateTime("2010-05-15 16:00:00")) {
    # current time is greater than 2010-05-15 16:00:00
    # in other words, 2010-05-15 16:00:00 has passed
}

डेटटाइम कंस्ट्रक्टर को दिया गया स्ट्रिंग इन नियमों के अनुसार पार्स किया गया है


ध्यान दें कि इसका उपयोग करना timeऔर strtotimeकार्य करना भी संभव है । मूल उत्तर देखें


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

1
हम अक्सर बिना किसी पैरामीटर के साथ नए DateTime () का दुरुपयोग देखते हैं, यदि आप UTC दिनांक (जैसा कि आपको चाहिए) का उपयोग कर रहे हैं, तो नए DateTime ("अब", नए DateTimeZone ('UTC')) का उपयोग करना पसंद करें। यह आपके ऐप को तारीखों में गलतफहमी से बचाता है। मैं आपको इसे फंक्शन स्टैटिक वैरिएबल, एक क्लास स्टैटिक या कहीं और चलने की प्रक्रिया में स्टोर करने की सलाह देता हूँ ...
Loenix

क्या होगा यदि हमारे पास पहले से ही एक डेटटाइम ऑब्जेक्ट है और हम जानना चाहते हैं कि क्या यह अतीत है क्योंकि हम आपके द्वारा सुझाए गए अनुसार डेटटाइम कंस्ट्रक्टर को ऑब्जेक्ट पास नहीं कर सकते हैं? क्या हमें इसके गेटिमेस्टैम्प () का उपयोग करना चाहिए और समय के साथ इसकी तुलना करनी चाहिए ()? @ साल्मन ए
उपयोगकर्ता ४२ --१'०४

@ user4271704 यह new DateTime('2010-05-15')केवल एक उदाहरण है, कोई भी DateTime ऑब्जेक्ट हो सकता है जिसे आपने पहले आरंभीकृत किया था।
सलमान ए

मान $objectलेना एक डेटटाइम ऑब्जेक्ट है, मैंने उपयोग किया if (new DateTime() > $object) {}और यह गलत तरीके से काम करता है। लेकिन if (time() > $bject->getTimeStamp()) {}correcly काम करता है। @ सलमान ए
उपयोगकर्ता 4271704

77

डेटटाइम क्लास भी है जो तुलना ऑपरेटरों के लिए एक फ़ंक्शन लागू करता है।

// $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';
}

1
इसके लिए क्या कार्य करता है?
still_dreaming_1 3

6

strtotimeअपनी निर्धारित तिथि / समय को टाइमस्टैम्प में बदलने के लिए PHP -function की जाँच करें : http://php.net/manual/en/function.strtotime.php

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

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

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


आइवर कोस्टर का जवाब देखें
स्टील ब्रेन

1
date_default_timezone_set('Asia/Kolkata');

$curDateTime = date("Y-m-d H:i:s");
$myDate = date("Y-m-d H:i:s", strtotime("2018-06-26 16:15:33"));
if($myDate < $curDateTime){
    echo "active";exit;
}else{
    echo "inactive";exit;
}

निश्चित रूप से यह काम नहीं करेगा क्योंकि $myDateइसके बराबर होगा string (0) ""
निकोला पेटकांस्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.