我試圖創建一個簡單的程序,在用戶輸入他們去睡覺的時間和他們醒來的時候,和輸出他們睡的總時間讀之間的區別。輸出顯示不正確,我不確定問題是什麼。我嘗試了兩種不同的代碼,但他們似乎都有同樣的問題。發現兩個日期時間(小時和分鐘)
第一個代碼是這樣的:
Console.WriteLine("Please input time you slept");
string sleepTime = Console.ReadLine();
Console.WriteLine("Please input the time you woke up");
string wakeTime = Console.ReadLine();
TimeSpan sleepDuration = DateTime.Parse(wakeTime).Subtract(DateTime.Parse(sleepTime));
Console.WriteLine("You slept for " + sleepDuration + " hours");
Console.ReadKey();
我我用12:00 AM對睡眠時間和8:00 AM的wakeTime第一次嘗試。輸出是8小時,這是正確的。我試圖改變的值,以11:00 PM爲休眠時間和7:00 AM爲wakeTime和產量爲-16:00,這是不正確的11:00 PM和7:00 AM之間的時間也是8小時。
這是我嘗試使用第二代碼:
Console.WriteLine("Please input the time you went to sleep");
DateTime sleepTime = Convert.ToDateTime(Console.ReadLine());
Console.WriteLine("Please input the time you woke up");
DateTime wakeTime = Convert.ToDateTime(Console.ReadLine());
TimeSpan sleepDuration = wakeTime - sleepTime;
Console.WriteLine("You slept for " + sleepDuration + " hours");
Console.ReadKey();
我使用的確切相同的倍我爲第一代碼,並得到完全相同的輸出。 12:00 AM至8:00 AM 8:00輸出至11:00 PM至7:00 AM輸出-16:00。
是什麼造成-16:00爲輸出,我該如何解決?
你只當你醒來的時間類型的問題?因爲你肯定沒有醒來早上7點你上牀睡覺了,晚上的同一天?即。你沒有睡覺,導致時間扭轉?您需要處理兩個DateTime值在不同日期的事實。基本上你計算了'7-23',那是'-16'。一個簡單的'如果(wakeTime <休眠時間)wakeTime = wakeTime.AddDays(1);'應該足夠了。 –