तुलना करने के लिए टाइमस्टैम्प में बदलना आवश्यक नहीं है, यह देखते हुए कि तार को 'YYYY-MM-DD' विहित प्रारूप में दिनांक के रूप में मान्य किया गया है।
यह परीक्षण काम करेगा:
( ( $date_from_user >= $start_date ) && ( $date_from_user <= $end_date ) )
दिया हुआ:
$start_date = '2009-06-17';
$end_date = '2009-09-05';
$date_from_user = '2009-08-28';
नोट: इस तरह की तुलना "गैर-वैध" तारीखों के लिए अनुमति देता है जैसे (32 दिसंबर) '2009-13-32' और अजीब रूप से तैयार किए गए तार के लिए '2009/3/3', जैसे कि एक स्ट्रिंग तुलना समतुल्य नहीं होगी एक तारीख या टाइमस्टैम्प तुलना। यह तभी कार्य करता है जब तार में दिनांक मान एक संवैधानिक और नस्लीय प्रारूप में होते हैं।
स्पष्ट रूप से विस्तृत, यहाँ एक नोट जोड़ने के लिए संपादित करें ।
तक लगातार महीने हमेशा दो अक्षरों का होना चाहिए, दिन हमेशा दो अक्षरों का होना चाहिए, और विभाजक वर्ण हमेशा एक पानी का छींटा होना चाहिए:, मैं उदाहरण है कि तार तुलना की जा रही समान प्रारूप में होना चाहिए के लिए मतलब है। हम मज़बूती से "तार" की तुलना नहीं कर सकते हैं जो चार चरित्र वर्ष, दो चरित्र माह, दो चरित्र दिन नहीं हैं। अगर हम एक चरित्र और तार में दो चरित्र महीने का मिश्रण था, उदाहरण के लिए, हम अप्रत्याशित परिणाम जब हम तुलना में प्राप्त होता है '2009-9-30'
करने के लिए '2009-10-11'
। हम मानवीय रूप से "9" को "10" से कम के रूप में देखते हैं, लेकिन एक स्ट्रिंग तुलना की तुलना '2009-9'
में अधिक दिखाई देगा '2009-1'
। जरूरी नहीं कि हमें डैश सेपरेटर कैरेक्टर हों; हम बस के रूप में मज़बूती से तार में तुलना कर सकते हैं'YYYYMMDD'
प्रारूप; यदि कोई विभाजक चरित्र है, तो उसे हमेशा होना चाहिए और हमेशा एक जैसा होना चाहिए।
CANONICAL द्वारा , मेरा मतलब है कि एक प्रारूप जिसके परिणामस्वरूप तार क्रमबद्ध होंगे जो दिनांक क्रम में क्रमबद्ध होंगे। यही है, स्ट्रिंग में "वर्ष" पहले, फिर "महीना", फिर "दिन" का प्रतिनिधित्व होगा। हम मज़बूती से स्ट्रिंग की तुलना 'MM-DD-YYYY'
प्रारूप में नहीं कर सकते , क्योंकि यह विहित नहीं है। एक स्ट्रिंग तुलना MM
(महीने) की तुलना में YYYY
(वर्ष ) इससे पहले कि स्ट्रिंग तुलना बाएं से दाएं काम करती है।) 'YYYY-MM-DD' स्ट्रिंग प्रारूप का एक बड़ा लाभ यह है कि यह विहित है; इस प्रारूप में दर्शाई गई तारीखों की तुलना स्ट्रिंग्स के रूप में की जा सकती है।
[परिशिष्ट]
यदि आप php टाइमस्टैम्प रूपांतरण के लिए जाते हैं, तो सीमाओं के बारे में जागरूक रहें।
कुछ प्लेटफार्मों पर, php 1970-01-01 और / या बाद में 2038-01-19 से पहले टाइमस्टैम्प मूल्यों का समर्थन नहीं करता है। (यह यूनिक्स टाइमस्टैम्प 32-बिट पूर्णांक की प्रकृति है।) बाद के संस्करणों pf php (5.3?) को संबोधित करना चाहिए।
टाइमज़ोन भी एक मुद्दा हो सकता है, अगर आप स्ट्रिंग से टाइमस्टैम्प और टाइमस्टैम्प से स्ट्रिंग में परिवर्तित होने पर उसी टाइमज़ोन का उपयोग करने के लिए सावधान नहीं हैं।
HTH