【问题标题】:C# forms - Getting time between two datesC# 表单 - 获取两个日期之间的时间
【发布时间】:2012-05-09 03:01:17
【问题描述】:

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

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

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

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

我浏览了互联网,我似乎只能找到如何使用“DateTime”而不是字符串来做到这一点(或者我错过了什么?)。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# string date datediff


    【解决方案1】:

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

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

    TimeSpan difference = date1 - date2;
    

    【讨论】:

      【解决方案2】:

      使用 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
      

      【讨论】:

      • 我已经尝试了你的建议,但我不确定如何显示时间跨度,我一直在玩日期、日期和 ToString() 属性,但我不能似乎到任何地方。我想出的只是“00:00:00”,我认为这是因为它正在寻找分钟和小时而没有得到任何信息,因为我正在向它发送日期。有什么想法吗?
      • 你想展示什么?总天数或更具体的测量?如果您只是在天数之后,请使用 TimeSpan 的 TotalDays 属性(请参阅文档:msdn.microsoft.com/en-us/library/system.timespan.aspx)。
      • 我知道了,我使用 Timespan 的不同属性来获得我想要的东西。感谢您的帮助。
      【解决方案3】:

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

      Date1.Subtract(Date2).TotalTime

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

      【讨论】:

        【解决方案4】:

        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
        

        【讨论】:

          猜你喜欢
          • 2018-09-17
          • 1970-01-01
          • 1970-01-01
          • 2019-06-22
          • 2012-03-24
          • 1970-01-01
          • 2013-09-08
          • 1970-01-01
          • 2010-10-05
          相关资源
          最近更新 更多