নির্ণায়ক:
প্রতিবছর 4 দ্বারা বিভাজ্য একটি লিপ বছর, এটি যখন 400 দ্বারা বিভাজ্য না হয় তবে 100 দ্বারা বিভাজ্য হয় So সুতরাং:
2004 - leap year - divisible by 4
1900 - not a leap year - divisible by 4, but also divisible by 100
2000 - leap year - divisible by 4, also divisible by 100, but divisible by 400
ফেব্রুয়ারিতে একটি লিপ বছরে 29 দিন থাকে এবং যখন লিপ বছর হয় না
এপ্রিল, জুন, সেপ্টেম্বর এবং নভেম্বর মাসে 30 দিন
জানুয়ারী, মার্চ, মে, জুলাই, আগস্ট, অক্টোবর এবং ডিসেম্বরে 31 দিন
পরীক্ষা:
নিম্নলিখিত তারিখগুলি সমস্ত বৈধতা পাস উচিত:
1976-02-29
2000-02-29
2004-02-29
1999-01-31
নিম্নলিখিত তারিখগুলি সমস্ত বৈধতা ব্যর্থ করা উচিত:
2015-02-29
2015-04-31
1900-02-29
1999-01-32
2015-02-00
ব্যাপ্তি:
আমরা ১ লা জানুয়ারী 1000 থেকে 31 ডিসেম্বর 2999 তারিখের জন্য পরীক্ষা করব Techn প্রযুক্তিগতভাবে বর্তমানে ব্যবহৃত গ্রেগরিয়ান ক্যালেন্ডারটি কেবল ব্রিটিশ সাম্রাজ্যের জন্য 1753 সালে এবং ইউরোপের দেশগুলির জন্য 1600 এর দশকে বিভিন্ন ক্ষেত্রে ব্যবহৃত হয়েছিল, তবে আমি যাচ্ছি না যে সম্পর্কে চিন্তা।
লিপ বছরের জন্য পরীক্ষা করার জন্য রেজেক্স:
বছরগুলি 400 দ্বারা বিভাজ্য:
1200|1600|2000|2400|2800
can be shortened to:
(1[26]|2[048])00
if you wanted all years from 1AD to 9999 then this would do it:
(0[48]|[13579][26]|[2468][048])00
if you're happy with accepting 0000 as a valid year then it can be shortened:
([13579][26]|[02468][048])00
বছরগুলি 4 দ্বারা বিভাজ্য:
[12]\d([02468][048]|[13579][26])
বছরগুলি 100 দ্বারা বিভাজ্য:
[12]\d00
100 দ্বারা বিভাজ্য নয়:
[12]\d([1-9]\d|\d[1-9])
বছরগুলি 100 দ্বারা বিভাজ্য কিন্তু 400 দ্বারা নয়:
((1[1345789])|(2[1235679]))00
4 দ্বারা বিভাজ্য কিন্তু 100 দ্বারা নয়:
[12]\d([2468][048]|[13579][26]|0[48])
লিপ বছরগুলি:
divisible by 400 or (divisible by 4 and not divisible by 100)
((1[26]|2[048])00)|[12]\d([2468][048]|[13579][26]|0[48])
4 দ্বারা বিভাজ্য নয়:
[12]\d([02468][1235679]|[13579][01345789])
একটি লিপ বছর নয়:
Not divisible by 4 OR is divisible by 100 but not by 400
([12]\d([02468][1235679]|[13579][01345789]))|(((1[1345789])|(2[1235679]))00)
ফেব্রুয়ারী (এমএম-ডিডি) ব্যতীত বৈধ মাস এবং দিন:
((01|03|05|07|08|10|12)-(0[1-9]|[12]\d|3[01]))|((04|06|09|11)-(0[1-9]|[12]\d|30))
shortened to:
((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30))
২৮ দিন সহ ফেব্রুয়ারি:
02-(0[1-9]|1\d|2[0-8])
২৯ দিন সহ ফেব্রুয়ারি:
02-(0[1-9]|[12]\d)
বৈধ তারিখ:
(leap year followed by (valid month-day-excluding-february OR 29-day-february))
OR
(non leap year followed by (valid month-day-excluding-february OR 28-day-february))
((((1[26]|2[048])00)|[12]\d([2468][048]|[13579][26]|0[48]))-((((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30)))|(02-(0[1-9]|[12]\d))))|((([12]\d([02468][1235679]|[13579][01345789]))|((1[1345789]|2[1235679])00))-((((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30)))|(02-(0[1-9]|1\d|2[0-8]))))
সুতরাং সেখানে আপনার কাছে ওয়াইওয়াইওয়াই-এমএম-ডিডি ফর্ম্যাটে 1 জানুয়ারী 1000 এবং 31 ডিসেম্বর 2999 এর মধ্যে তারিখগুলির জন্য একটি রেজিেক্স রয়েছে।
আমি সন্দেহ করি যে এটি কিছুটা ছোট করা যেতে পারে তবে আমি এটি অন্য কারও কাছে ছেড়ে দেব।
এটি সমস্ত বৈধ তারিখের সাথে মিলবে। আপনি যদি এটিটি কেবলমাত্র বৈধ হতে চান যখন এটিতে কেবলমাত্র একটি তারিখ এবং অন্য কিছু থাকে না, তবে এটিকে ^( )$
এমনভাবে মোড়ানো করুন :
^(((((1[26]|2[048])00)|[12]\d([2468][048]|[13579][26]|0[48]))-((((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30)))|(02-(0[1-9]|[12]\d))))|((([12]\d([02468][1235679]|[13579][01345789]))|((1[1345789]|2[1235679])00))-((((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30)))|(02-(0[1-9]|1\d|2[0-8])))))$
আপনি যদি এটি একটি optionচ্ছিক তারিখ প্রবেশের জন্য চান (যেমন এটি ফাঁকা বা বৈধ তারিখ হতে পারে) তবে ^$|
শুরুতে যুক্ত করুন, এর মতো:
^$|^(((((1[26]|2[048])00)|[12]\d([2468][048]|[13579][26]|0[48]))-((((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30)))|(02-(0[1-9]|[12]\d))))|((([12]\d([02468][1235679]|[13579][01345789]))|((1[1345789]|2[1235679])00))-((((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30)))|(02-(0[1-9]|1\d|2[0-8])))))$
date("Y-m-d", strtotime("2012-09-12"))=="2012-09-12";
বা পিএইচপি'রcheckdate ( int $month , int $day , int $year )
।