由於在寫一個有趣的APP,想要讓使用者可以輸入日期—年、月、日,我需要驗證日期是否合理,再把年、月、日送到server當作參數,之後server就會吐出相對應的結果給我。 很簡單地直接找現成的code,其實依照大學程式設計的練習,或是寫ACM的題目,思路清楚的話很容易就能寫出來。
判斷日期是否合理:首先月有分大月31天、小月30天,另外二月在閏年有29天、非閏年有28天。
那怎麼判斷閏年呢?年不可以被100整除但可以被4整除,或者可以被400整除,只要符合兩者其中之一,即是閏年。
以下程式碼就是在做上述的邏輯,只是我把年限制在1600-2100年之間,要是合理的日期丟入method,就會回傳true,否則為false。
- (BOOL)validateDateForMonth:(int)month day:(int)day year:(int)year
{
bool validation = true;
if(!(year >= 1600 && year <=2100)) {
validation = false;
}
if(day < 1) {
validation = false;
}
switch(month)
{
case 2:
if([self leapYear:year]) { // We only care about leap years in February
if(day > 29) {
validation = false;
}
}
else {
if(day > 28) {
validation = false;
}
}
break;
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if(day > 31) {
validation = false;
}
break;
case 4: case 6: case 9: case 11:
if(day > 30) {
validation = false;
}
break;
default: // the month is not between 1 and 12
validation = false;
break;
}
return validation;
}
- (BOOL)leapYear:(int)year
{
return (year % 100 != 0 && year % 4 == 0) || (year % 400 == 0);
}
參考:老闆。
隨意留個言吧:)~