VB 2010:如何计算日期差?

问题描述

| 我想制作一个程序,以几年,几个月,几周和几天为单位,返回您的年龄。但是我没办法比较不同的时间。 输入的是一个看起来像01.01.2011(dd.mm.yyyy)的字符串。 请,有人可以帮忙吗? 非常感谢! 编辑: 到目前为止,我的代码是这样的:
Try
        dim date1 as string = \'01.01.2011\'
        \' Today
        Dim date2 As Date
        date2 = Date.Now
        \' number of seconds since date1
        Dim seconds As Long
        seconds = DateDiff(\"s\",date1,date2)
        lbl_seconds.Text = seconds.ToString & \" Seconds\"
        \' Number of minutes since date1
        Dim Minutes As Long
        Minutes = DateDiff(\"n\",date2)
        lbl_minutes.Text = Minutes.ToString & \" Minutes\"
        \' Number of hours since date1
        Dim hours As Long
        hours = DateDiff(\"h\",date2)
        lbl_hours.Text = hours.ToString & \" Hours\"
        \' Days
        Dim days As Long
        days = DateDiff(\"d\",date2)
        lbl_days.Text = days.ToString & \" Days\"
        \' weeks
        Dim weeks As Long
        weeks = DateDiff(\"ww\",date2)
        lbl_weeks.Text = weeks.ToString & \" Weeks\"
        \'months
        Dim months As Long
        months = DateDiff(\"m\",date2)
        lbl_months.Text = months.ToString & \" Months\"
        \' Years
        Dim years As Long
        years = DateDiff(\"yyyy\",date2)
        lbl_years.Text = years.ToString & \" Years\"


    Catch ex As Exception
        date1 = \"01.01.2011\"
        MsgBox(\"not a valid date given!\")
    End Try
    

解决方法

        DateDiff是VB函数,不属于标准.Net库的一部分(因此C#无法使用它)。 使用TimeSpan类和带有自定义TimeSpan格式字符串的toString()方法来获取所需的内容会更容易。 编辑: 这是代码,您可以将结果与http://www.easycalculation.com/date-day/age-calculator.php进行比较:
Dim birthday As New DateTime(1990,1,1)
Dim ts As TimeSpan = DateTime.Now.Subtract(birthday)

Dim years As Integer,months As Integer,days As Integer,hours As Integer,minutes As Integer,seconds As Integer

\' compute difference in total months
months = 12 * (DateTime.Now.Year - birthday.Year) + (DateTime.Now.Month - birthday.Month)

\' based upon the \'days\',\' adjust months & compute actual days difference
If DateTime.Now.Day < birthday.Day Then
    months -= 1
    days = DateTime.DaysInMonth(birthday.Year,birthday.Month) - birthday.Day + DateTime.Now.Day
Else
    days = DateTime.Now.Day - birthday.Day
End If
\' compute years & actual months
years = Math.Floor(months / 12)
months -= years * 12

hours = ts.Hours
minutes = ts.Minutes
seconds = ts.Seconds
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...