【问题标题】:Get date difference in VB.NET在 VB.NET 中获取日期差异
【发布时间】:2014-01-05 06:24:57
【问题描述】:

我想在单独的文本框中获取两个日期时间选择器在年、月和日中选择的两个日期之间的差异。

我试过了:

txtyrs.text = datediff(datetimepicker1,datetimepicker2)

它不工作。

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    试试这个:

    Dim date1 As Date = Date.Now
    Dim date2 As Date = date1.AddDays(4.0#)
    
    Dim span = date2 - date1
    
    Dim days As Double = span.TotalDays '=4
    

    如果您想提取年份,请查看 this post

    【讨论】:

      【解决方案2】:

      使用TimeSpan 和一些日期计算,这应该可以工作:

      Dim offset = New Date(1, 1, 1)
      Dim dateOne = DateTimePicker1.Value
      Dim dateTwo = DateTimePicker2.Value
      Dim diff As TimeSpan = dateTwo - dateOne
      Dim years = (offset + diff).Year - 1
      Dim months = (dateTwo.Month - dateOne.Month) + 12 * (dateTwo.Year - dateOne.Year)
      Dim days = diff.Days
      TxtYear.Text = years.ToString
      TxtMonth.Text = months.ToString
      TxtDays.Text = days.ToString
      

      【讨论】:

        【解决方案3】:

        试试这个:

        txtyrs.text=datediff(DateInterval.Year,datetimepicker1,datetimepicker2).ToString()
        

        假设datetimepicker1datetimepicker2 的类型为DateTime。如果没有,您需要获取它们各自的 DateTime 值并使用它们。

        【讨论】:

          【解决方案4】:

          这样的事情应该可以工作:

              Dim dateOne = DateTimePicker1.Value
              Dim dateTwo = DateTimePicker2.Value
              Dim diff As TimeSpan = dateTwo.Subtract(dateOne)
              Dim years As Double = diff.TotalDays / 365
              txtyrs.Text = years.ToString
              txtmonsh.Text = (years * 12).ToString
              txtdays.Text = diff.TotalDays.ToString
          

          【讨论】:

            【解决方案5】:

            感谢所有帮助过的人。

            必须进行一些计算,然后,

            dim ts as TimeSpan = dtpicker1.value - dtpicker.value
            dim days, months, years as integer
            months = 12*(dtp1.value.year - dtp2.value.year) (dtp1.value.month-dtp2.value.month)
            

            ...更多

            【讨论】:

              【解决方案6】:

              用途:

              datediff(interval, date1, date2);
              

              例如:interval可以是日、月、年、小时、秒分钟等。它从date2中减去date1。

              在 Dateformat 中输入 date1 和 date2。

              格式:DateDiff(DateInterval.Day, Now.Date, Now.AddDays(4).Date)

              输出:4

              【讨论】:

                【解决方案7】:
                Dim D1 as Date = Now 
                Dim D2 as Date = D1.AddDays(10) 
                Dim difference As
                TimeSpan = D2.Subtract(D1) 
                msgBox(“{0} Days”, difference.TotalDays) 'THIS WILL RETURN Total No. of Days
                

                【讨论】:

                  【解决方案8】:

                  我已经修改了您的代码,以便您可以轻松理解它。

                  试试这个:

                  txtyrs.text = DateDiff(DateInterval.Day, datetimepicker1.value,datetimepicker2.value)
                  

                  我希望就是这样。如果有问题或仍然令人困惑,请告诉我。

                  【讨论】:

                    【解决方案9】:

                    使用 DateDiff,您可以使用不同的日期间隔参数调用它以检索适当的值:

                     Dim D1, D2 As Date
                        D1 = Date.Now
                        D2 = #11/9/2004#
                        'DateDiff
                        Console.WriteLine("DateDiff")
                        Console.WriteLine()
                        Console.WriteLine("{0} Days", _
                            DateDiff(DateInterval.Day, D1, D2))
                        Console.WriteLine("{0} Hours", _
                            DateDiff(DateInterval.Hour, D1, D2))
                        Console.WriteLine("{0} Minutes", _
                            DateDiff(DateInterval.Minute, D1, D2))
                        Console.WriteLine("{0} Seconds", _
                            DateDiff(DateInterval.Second, D1, D2))
                        Console.WriteLine()
                    

                    或者,可以通过从另一个日期中减去一个日期来检索 TimeSpan 结构,然后查询该结构的各个成员。

                    Console.WriteLine("TimeSpan")
                        Console.WriteLine()
                        Dim difference As TimeSpan = D2.Subtract(D1)
                        Console.WriteLine("{0} Days", difference.TotalDays)
                        Console.WriteLine("{0} Hours", difference.TotalHours)
                        Console.WriteLine("{0} Minutes", difference.TotalMinutes)
                        Console.WriteLine("{0} Seconds", difference.TotalSeconds)
                        Console.WriteLine()
                    

                    两种不同方法的输出几乎相同,只是 TimeSpan 属性返回 Doubles,而 DateDiff 始终返回 Longs (Int64)。

                    日期差异

                    175 天

                    4222 小时

                    253345 分钟

                    15200730 秒

                    时间跨度

                    175.934383644387 天

                    4222.42520746528 小时

                    253345.512447917 分钟

                    15200730.746875 秒

                    【讨论】:

                      【解决方案10】:

                      我用可选的 EndDate 创建了这个函数,默认是当前的。我已经在时间中添加了归零功能。

                      Public Shared Function Zero(ByVal Number As Integer) As String
                          If Number < 10 Then
                              Return "0" & Number.ToString
                          Else
                              Return Number.ToString
                          End If
                      End Function
                      
                      Public Shared Function TimeDifference(ByVal StartDate As DateTime, Optional ByVal EndDate As DateTime = Nothing) As String
                          If EndDate = Nothing Then
                              EndDate = Date.Now()
                          End If
                          Dim timediff As TimeSpan
                          If EndDate > StartDate Then
                              timediff = EndDate - StartDate
                              Return timediff.Days & ":" & Zero(timediff.Hours) & ":" & Zero(timediff.Minutes) & ":" & Zero(timediff.Seconds)
                          Else
                              timediff = StartDate - EndDate
                              Return timediff.Days & ":" & Zero(timediff.Hours) & ":" & Zero(timediff.Minutes) & ":" & Zero(timediff.Seconds)
                          End If
                      End Function
                      

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2018-02-09
                        • 1970-01-01
                        • 1970-01-01
                        • 2022-11-04
                        • 2023-01-15
                        • 2011-12-18
                        相关资源
                        最近更新 更多