2012-06-12 17 views
8

मैं उपयोगकर्ताओं को 00:00:00 से 23:00:00 पर एक घंटे का चयन करने की अनुमति दे रहा हूं और यह जांचने की आवश्यकता है कि वे सही प्रारूप सबमिट करते हैं या नहीं। क्या कोई नियमित अभिव्यक्ति या PHP फ़ंक्शन है जो 24 घंटे के प्रारूप को मान्य करता है उदा। HH:MM:SS?PHP 24 घंटे के समय प्रारूप को सत्यापित करने

मुझे कुछ regex उदाहरण मिले लेकिन 24 घंटे का समय मैं मान्य कर रहा हूं हमेशा मिनटों और सेकंड के लिए 00 पर सेट किया जाता है। केवल घंटा बदलता है।

उदाहरण के लिए

18:00:00, 23:00:00, 01:00:00 
+0

उपयोगकर्ता अपने द्वारा चुने गए चयन को बदल सकते हैं? उदाहरण के लिए, "25:00:00" या "केले" को लागू करना? – Zuul

+0

sachleen का जवाब वह है जो आपने पूछा है, लेकिन यदि आपकी वास्तविक समस्या उपयोगकर्ता को 00 और 23 के बीच एक संख्या दर्ज करने का तरीका प्रदान कर रही है, तो ड्रॉप डाउन मेनू का उपयोग करने पर विचार करें। –

+0

@Zuul यकीन है कि वे कर सकते हैं, वे ड्रॉपडाउन सूची – CyberJunkie

उत्तर

19

यह मेल खाता सेकंड

([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] 

यदि आप केवल मिनट और सेकंड के लिए 00 चाहते सहित 24 घंटे समय है, तो

([01]?[0-9]|2[0-3]):00:00 
+0

धन्यवाद देना चाहिए! आपका कोड कई लोगों की मदद करेगा। – CyberJunkie

+0

मैं पूछना भूल गया..क्या निम्नलिखित delimiters regex 2 के लिए सही हो सकता है? '/^([01]? [0-9] | 2 [0-3]): 00: 00 $ /' – CyberJunkie

+2

'^' का मतलब है स्ट्रिंग की शुरुआत और स्ट्रिंग के '$' अंत। तो इसमें उन लोगों के साथ, समय के आसपास कुछ भी नहीं हो सकता है। तो हाँ, यह न केवल काम करेगा, यह करना सही है। – sachleen

2

यह

प्रयास करें
$time="23:00:00"; 

preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $time); 
+0

एक आकर्षण की तरह काम करता है! (मेरा दिन बचाया)। –

3

यहां इसका अंतिम नमूना उपयोग करने के लिए तैयार हैं।

$myTime = '23:00:00'; 

$time = preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $myTime); 

if ($time == 1) 
{ 
    // make a error! 
} 
else 
{ 
    // make a error! 
} 
1

क्या यह एक RegEx होना है? आप आसानी से PHPs strtotime का उपयोग कर सकते हैं-तिथियों और समय को सत्यापित करने के लिए फ़ंक्शन (बिना किसी तारीख के काम भी करता है)। strtotime PHP 5.1 से पहले false (-1 लौटाता है) यदि दिया गया समय मान्य नहीं है। इसलिए === ऑपरेंड का उपयोग करना न भूलें!

if (strtotime("12:13") === false) { echo("Wrong Time!"); } // Echos nothing 
if (strtotime("19:45") === false) { echo("Wrong Time!"); } // Echos nothing 
if (strtotime("17:62") === false) { echo("Wrong Time!"); } // Echos 'Wrong Time!' 
0

यह मेरे लिए एक आकर्षण की तरह काम करता था।

$time = "23:59:60";  
preg_match("/^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/", $time) 
संबंधित मुद्दे