【问题标题】:Calculate time difference and return only hours and minutes (in VB.net)计算时差并仅返回小时和分钟(在 VB.net 中)
【发布时间】:2014-05-17 17:48:09
【问题描述】:

我正在开发一个计算时差的系统。如何比较两个时间(带日期)并获得差异的小时和分钟?

示例 1:

datetime1 = 1-Apr-2014 01:05:04 AM
datetime2 = 1-Apr-2014 02:05:04 AM

结果将是:

datetime2 - datetime1 = 01 Hours 00 Minutes

示例 2:

datetime1 = 1-Apr-2014 01:05:04 AM
datetime2 = 2-Apr-2014 02:15:04 AM

结果将是:

datetime2 - datetime1 = 25 Hours 10 Minutes

负值(对于 datetime1 > datetime2)也有助于表明 datetime1 大于 datetime2

示例:

datetime1 = 2-Apr-2014 01:05:04 AM
datetime2 = 1-Apr-2014 01:05:04 AM

结果将是:

datetime2 - datetime1 = -24 Hours 00 Minutes

谢谢!

【问题讨论】:

    标签: vb.net visual-studio-2010 visual-studio


    【解决方案1】:

    我的建议是使用类似的东西

    Dim minutesDiff = DateDiff(DateInterval.Minute,datetime1,datetime2)
    Console.WriteLine("{0} hours {1} minutes", Math.Abs(minutesDiff) / 60, Math.Abs(minutesDiff) Mod 60)
    

    将其扩展到秒:

    Dim secondsDiff = DateDiff(DateInterval.Second,datetime1,datetime2)
    Console.WriteLine("{0} hours {1} minutes {2} seconds", Math.Abs(secondsDiff)/3600, (Math.Abs(secondsDiff) Mod 3600) / 60, Math.Abs(secondsDiff) Mod 60)
    

    【讨论】:

    • 你好。谢谢你的建议。如何使用您的方法计算小时和分钟?谢谢
    • 两者都已经计算好了,试试运行吧。通过将分钟除以 60,您将得到小时差,而通过使用 Mod,您将获得剩余的分钟数。
    【解决方案2】:

    另一种方式,您可以使用TimeSpan 对象的TotalHoursMinutes 属性减去两个DateTimes:

    Dim d1 As DateTime = DateTime.Now
    Dim d2 As DateTime = DateTime.Now.AddHours(25).AddMinutes(10)
    
    Dim difference As TimeSpan = d2 - d1
    'round down total hours to integer'
    Dim hours = Math.Floor(difference.TotalHours)
    Dim minutes = difference.Minutes
    'Following line prints : 25 Hours 10 Minutes'
    Console.WriteLine("{0} Hours {1} Minutes", hours, minutes)
    

    【讨论】:

      【解决方案3】:

      我的问题的解决方案是:

      Dim d1 As DateTime = DateTime.Parse("1-Apr-2014 10:10:00 AM")
      Dim d2 As DateTime = DateTime.Parse("2-Apr-2014 10:10:00 AM")
      Dim difference As TimeSpan = d2 - d1
      'round down total hours to integer'
      Dim hours = Math.Floor(difference.TotalHours)
      Dim minutes = Math.Abs(difference.Minutes)
      Dim seconds = difference.Seconds
      Dim timeleft As String = Format(hours, "00") + " h " + Format(minutes, "00") + " m " + Format(seconds, "00") + " s "
      If Int(seconds) < 0 Then
           timeleft = "00 h 00 m 00 s (Time Out)"
      End If
      Return timeleft 
      ' timeleft 24 hours 00 minutes 00 seconds
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-20
        相关资源
        最近更新 更多