我正在尝试查找两个日期之间的时间,一个是当天(今天),另一个是用户定义的截止日期。
我正在使用C#Windows Forms并且我使用了“日期时间选择器”,以便用户可以选择截止日期,并且我创建了一个名为Today并使用的字符串
string Today = System.DateTime.Today.ToString("dd-mm-yyyy");
作为当前日期。但我不知道如何找到这两点之间的时间长度(因为它们是字符串),我的程序是一个简单的“待办事项列表”,任务持续时间是几天和几周(“yyyy”只是出于美学目的,可以在必要时将其移除)。
我已经看过互联网了,我似乎找到的是如何用“DateTime”来代替字符串(或者我错过了什么?)。
任何帮助都会有很大帮助。
答案 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