0

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

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

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

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

我查看了互联网,我似乎只能找到如何使用“DateTime”而不是字符串来执行此操作(或者我错过了什么?)。

任何帮助将不胜感激。

4

4 回答 4

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
于 2012-04-28T18:22:27.963 回答
3

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

当您将两个日期相减时,您会得到一个TimeSpan实例。这为您提供了时间差量。

TimeSpan difference = date1 - date2;
于 2012-04-28T18:20:37.347 回答
1

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

Date1.Subtract(Date2).TotalTime

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

于 2012-04-28T18:23:49.147 回答
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
于 2012-04-28T18:25:03.867 回答