C#表格 - 在两个日期之间获得时间

时间:2012-04-28 18:18:10

标签: c# string date datediff

我正在尝试查找两个日期之间的时间,一个是当天(今天),另一个是用户定义的截止日期。

我正在使用C#Windows Forms并且我使用了“日期时间选择器”,以便用户可以选择截止日期,并且我创建了一个名为Today并使用的字符串

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

作为当前日期。但我不知道如何找到这两点之间的时间长度(因为它们是字符串),我的程序是一个简单的“待办事项列表”,任务持续时间是几天和几周(“yyyy”只是出于美学目的,可以在必要时将其移除)。

我已经看过互联网了,我似乎找到的是如何用“DateTime”来代替字符串(或者我错过了什么?)。

任何帮助都会有很大帮助。

4 个答案:

答案 0 :(得分:4)

使用DateTimePicker的“Value”属性获取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

答案 1 :(得分:3)

不要使用两个字符串 - 使用实际的DateTime个实例。字符串不会也不能“理解”日期 - 这就是DateTime对象存在的原因。

当您从彼此中减去两个日期时,您将获得TimeSpan个实例。这给你时间差。

TimeSpan difference = date1 - date2;

答案 2 :(得分:1)

我想您正在寻找以下内容:

Date1.Subtract(日期2).TotalTime

以下链接可帮助您了解更多信息 http://www.c-sharpcorner.com/UploadFile/DipalChoksi/DateDiff_CS_DC09132006172429PM/DateDiff_CS_DC.aspx

答案 3 :(得分:0)

AS Oded提到字符串不是最佳方法。 DateTimes可以相互减去并给你一个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