2012-04-28 76 views
0

我試圖找到兩個日期之間的時間,一個是當前日期(今天),另一個是用戶定義的截止日期。C#窗體 - 在兩個日期之間獲取時間

我用C#Windows窗體工作,我已經使用了「日期時間選擇器」,使用戶可以選擇一個截止日期,我已經創建了一個名爲字符串今天與使用

string Today = System.DateTime.Today.ToString("dd-mm-yyyy"); 

作爲當前日期。但我不知道如何找到這兩點之間的時間長度(因爲它們是字符串),我的程序是一個簡單的「待辦事項列表」,任務持續時間在幾天和幾周(「yyyy」只是出於美學目的,如果需要可以將其去除)。

我已經看過了互聯網,所有我似乎可以找到的是如何用「DateTime」來代替字符串(或者我錯過了什麼?)。

任何幫助將大大apreciated。

回答

4

使用您的DateTimePicker的「值」屬性來獲取DateTime值,並使用DateTime.Now來獲取當前時間的DateTime值(在本地時區)。

如果您只是減去日期(沒有時間分量),請在減去前訪問兩個DateTime對象的Date屬性。

DateTime userDate = dateTimePicker.Value.Date; 
DateTime currentDate = DateTime.Now.Date; 
TimeSpan difference = userDate.Subtract(currentDate); //assuming deadline is in the future 
+0

我試過你的建議,但我不知道如何顯示Timespan,我一直在玩日期,日期和ToString()屬性,但我似乎無法到任何地方。所有我想到的是「00:00:00」,我認爲這是因爲它尋找的是分鐘和幾小時而沒有得到任何東西,因爲我正在發送它的日期。有任何想法嗎? – Raker 2012-04-29 13:21:31

+0

你想要展示什麼?總天數或更具體的測量?如果您僅在天數之後,請使用TimeSpan的TotalDays屬性(請參閱文檔:http://msdn.microsoft.com/zh-cn/library/system.timespan.aspx)。 – roken 2012-04-29 19:55:30

+0

我明白了,我使用了Timespan的不同屬性來獲得我正在尋找的東西。謝謝你的幫助。 – Raker 2012-04-30 12:11:19

3

請勿使用兩個字符串 - 使用實際的DateTime實例。字符串不能也不能「理解」日期 - 這就是爲什麼DateTime對象存在。

當你從對方減去兩個日期時,你會得到一個TimeSpan實例。這給你時間差的數量。

TimeSpan difference = date1 - date2; 
0

AS俄德提到的字符串不是最好的方法。日期時間不能相互替代,並給你一個TimeSpan,它代表了一個時間跨度。

這是一個MSDN示例,應該澄清事情。

DateTime departure = new DateTime(2010, 6, 12, 18, 32, 0); 
DateTime arrival = new DateTime(2010, 6, 13, 22, 47, 0); 
TimeSpan travelTime = arrival - departure; 
Console.WriteLine("{0} - {1} = {2}", arrival, departure, travelTime);  
// The example displays the following output: 
//  6/13/2010 10:47:00 PM - 6/12/2010 6:32:00 PM = 1.04:15:00 
相關問題