2016-04-27 39 views
1

用戶輸入了他們的生日,我試圖找出這個日期(我稱之爲UserBD)是否在2x日期(日期1 & Date2)之間。檢查用戶輸入的日期是否在IF語句內的2個日期之間? C#

這樣就可以根據他們的生日月份和日期計算用戶的星座。

到目前爲止,我試着做以下,但是這顯然是錯誤的,因爲天不跑不休向上,他們重新在月末:

DateTime AquariusStart = new DateTime(1900, 01, 20); 
DateTime AquariusEnd = new DateTime(1900, 02, 18); 

if (userBD.Month >= AquariusStart.Month && 
    userBD.Month <= AquariusEnd.Month && 
    userBD.Day >= AquariusStart.Day && 
    userBD.Day <= AcquarisStart.Day) 
{ 
    Console.WriteLine("Your Star Sign is Aquarius!"); 
} 

提前感謝! :)

+0

你能不能檢查'如果(userBD> = AquariusStart && userBD <= AquariusEnd)'? – Kidiskidvogingogin

+0

當然,如果你能告訴我如何讓DateTime的年份不與生日衝突? (I.E如果userBD.Year是2000,日期時間將在2000年內搜索或完全忽略年份)。 – CaffeineFueledWebDev

+0

你只需要讓開始/結束與你的生日同一年,你可以做任何你喜歡的比較 – BugFinder

回答

1

您可以比較日期時間。所以,你可以做這樣的:

var birthDay = new DateTime(1900, userBirthDay.Month, userBirthDay.Day); 
if(aquariusStart <= birthDay && birthDay < aquariusEnd) 
{ 
    //Do something. 
} 
+0

如何使用戶的生日年份與DateTime同步的年份? – CaffeineFueledWebDev

+0

將其編輯爲同年使用。您必須創建一個新的DateTime,因爲DateTimes是不可變的。 – Carra

+0

解決了它,謝謝:) – CaffeineFueledWebDev

0

像這樣的東西會做:

DateTime AquariusStart = new DateTime(DateTime.Now.Year, 01, 20); 
DateTime AquariusEnd = new DateTime(DateTime.Now.Year, 02, 18); 

DateTime UserBd = new DateTime(DateTime.Now.Year, 02, 19); 

if (DateTime.Compare(AquariusStart, UserBd) < 0 && 
    DateTime.Compare(AquariusEnd, UserBd) >= 0) 
{ 
    Console.WriteLine("Your Star Sign is Aquarius!"); 
} 
+0

我總是討厭使用DateTime.Now。如果2016年23:59:59開始,2017年00:00:00開始使用userbd,則可能會失敗。 – Carra

+0

@Carra是的,你是對的......但這是一個非常邊緣的情況。無論如何,這只是爲了顯示「DateTime.Compare」操作:) – Pikoh

相關問題