VB 2010:如何计算日期差异?
我想要做一个程序,它会返回你几岁,几年,几周,几周和几天。但我没有得到它比较不同的时间。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", date1, date2)
lbl_minutes.Text = Minutes.ToString & " Minutes"
' Number of hours since date1
Dim hours As Long
hours = DateDiff("h", date1, date2)
lbl_hours.Text = hours.ToString & " Hours"
' Days
Dim days As Long
days = DateDiff("d", date1, date2)
lbl_days.Text = days.ToString & " Days"
' weeks
Dim weeks As Long
weeks = DateDiff("ww", date1, date2)
lbl_weeks.Text = weeks.ToString & " Weeks"
'months
Dim months As Long
months = DateDiff("m", date1, date2)
lbl_months.Text = months.ToString & " Months"
' Years
Dim years As Long
years = DateDiff("yyyy", date1, 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类和toString() method with Custom TimeSpan Format String可以更容易地得到您想要的。
编辑:
下面的代码,你可以比较结果向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
该标准并不重要,我只是想正确计算它。 – 2011-05-31 17:39:09
我可能将'DateTime.Now'存储在本地变量中,以便计算保持一致。虽然不太可能,但是在代码运行的时候,在12月31日午夜之后可能会有一秒钟过去,这将返回一个有趣的值,我想。所以在第3行你会有'DateTime.Now' = 2011/12/31 11:59。在第7行中,您可以使用'DateTime.Now' = 01/01/2012 12:00 a.m.这只是需要考虑的事情。 – Bobort 2011-06-01 15:48:36
DateDiff是VisualBasic命名空间的一部分,C#提供了一个简单的参考添加。这正是你想要使用它的情况。 – jmoreno 2011-06-03 16:38:33
让我们了解您到目前为止试过。 – 2011-05-31 16:37:09
我发现DateDiff的年份始终是全年的值(因此2000年出生的所有人现在都是11岁),所以我不得不用几秒或几天来计算它 - 但是如何用闰年来计算? – 2011-05-31 16:53:18