Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 两个日期之间的周/月差异_Vb.net_Date - Fatal编程技术网

Vb.net 两个日期之间的周/月差异

Vb.net 两个日期之间的周/月差异,vb.net,date,Vb.net,Date,我需要找出两个日期之间有一些限制的差异 如果月差大于6,则显示月差 如果少于6个月,则以周为单位显示 最后,始终将整数四舍五入到下一个整数(6.2周-->7周) 我试过这个 Dim startDate As Date = txtStartDate.DateValue Dim endDate As Date = txtEndDate.DateValue Dim dateDiff As TimeSpan = endDate - startDate Dim tot

我需要找出两个日期之间有一些限制的差异

  • 如果月差大于6,则显示月差
  • 如果少于6个月,则以周为单位显示
  • 最后,始终将整数四舍五入到下一个整数(6.2周-->7周)
我试过这个

    Dim startDate As Date = txtStartDate.DateValue
    Dim endDate As Date = txtEndDate.DateValue
    Dim dateDiff As TimeSpan = endDate - startDate

    Dim totalDays As Double = dateDiff.TotalDays
    'Divide by 7 to get the number of weeks
    Dim weeks As Double = totalDays / 7
    '6 months, average of 4.34812 weeks per month
    If (weeks >= 26.08872) Then
        txtDuration.Text = Math.Ceiling((weeks / 4.34812)).ToString() + " Months"
    Else
        txtDuration.Text = Math.Ceiling(weeks).ToString() + " Weeks"
    End If
它适用于某些日期,但并非适用于所有情况

  • 2014/09/01->2015/03/01给了我26周,应该是6个月
有什么想法吗?在vb.net中是否有一个内置函数可以让它变得更简单

谢谢你,马克

试试这个

diff = dateDiff(DateInterval.Month, startDate, endDate)

If (diff > 6) Then
    TxtDuration.Text = diff
Else
    TxtDuration.Text = dateDiff(DateInterval.WeekOfYear, startDate, endDate)
End If
您必须重命名TimeSpan变量dateDiff,因为它将与dateDiff方法冲突


我希望这有帮助

这些日期之间有181天,即25.857142857周。我修改了周部分,以便能够将其四舍五入到下一个整数。Dim days As Long=DateDiff(DateInterval.Day,startDate1,endDate1)txtFirstDuration.Text=Math.天花板(天/7)。ToString