可惜的是TimeSpan没有提供TimeSpan.Months这样的方法。那么还有没有办法求相差的月份呢?
vb.net还提供了DateDiff()方法。
DateDiff 属于 Microsoft.VisualBasic 命名空间,我个人理解是.net为了兼容之前的vb专门建立的命名空间。
我们来看看DateDiff的说明:
DateDiff(DateInterval,DateTime,FirstDayOfWeek,FirstWeekOfYear) 返回一个 Long 值,该值指定两个 Date 值之间的时间间隔数。
使用DateDiff 的代码如下:
我们来看看DateDiff的说明:
DateDiff(DateInterval,DateTime,FirstDayOfWeek,FirstWeekOfYear) 返回一个 Long 值,该值指定两个 Date 值之间的时间间隔数。
使用DateDiff 的代码如下:
Sub Main() Dim date1,date2 As DateTime date1 = Date.Now() date2 = New DateTime(2018,5,12,10,13) Dim yearDiff As Integer Dim monthDiff As Integer Dim dayDiff As Integer Dim hourDiff As Integer Dim minuteDiff As Integer Dim secondDiff As Integer yearDiff = DateDiff("yyyy",date1,date2) monthDiff = DateDiff("M",date2) dayDiff = DateDiff("d",date2) hourDiff = DateDiff("H",date2) minuteDiff = DateDiff("n",date2) secondDiff = DateDiff("s",date2) Console.WriteLine("{0} 与 {1}",Format(date1,"yyyy年M月d日 H时m分s秒"),Format(date2,"yyyy年M月d日 H时m分s秒")) Console.WriteLine("相差年份:{0}",yearDiff) Console.WriteLine("相差月份:{0}",monthDiff) Console.WriteLine("相差天数:{0}",dayDiff) Console.WriteLine("相差小时:{0}",hourDiff) Console.WriteLine("相差分钟:{0}",minuteDiff) Console.WriteLine("相差秒钟:{0}",secondDiff) Console.ReadKey() End Sub
运行结果如下:
例如:
minuteDiff = DateDiff("n",date2)
等同于:
minuteDiff = DateDiff(DateInterval.Minute,date2)
minuteDiff = DateDiff("n",date2)
等同于:
minuteDiff = DateDiff(DateInterval.Minute,date2)
下表来自于MSDN:
字符串值 | 时间差额的单位 | |
DateInterval.Day | "d" | 天 |
DateInterval.DayOfYear | "y" | 天 |
DateInterval.Hour | "h" | 小时 |
DateInterval.Minute | "n" | 分钟 |
DateInterval.Month | "m" | 月份 |
DateInterval.Quarter | "q" | 季度 |
DateInterval.Second | "s" | 秒 |
DateInterval.Weekday | "w" | 周 |
DateInterval.WeekOfYear | "ww" | 日历周 |
DateInterval.Year | "yyyy" | 年份 |
如果在现有日期时间基础上增加或减少求得新的日期时间呢?
DateTime.AddYears、DateTime.AddMonth。。。。
Sub Main() Dim date1,date2 As DateTime date1 = Date.Now() date2 = date1.AddHours(25) Dim date3 As TimeSpan date3 = date2.Subtract(date1) Console.WriteLine("{0} 与 {1}","yyyy年M月d日 H时m分s秒")) Console.WriteLine("相差小时:" & date3.Hours) Console.WriteLine("相差小时:" & date3.TotalHours) Console.ReadKey() End Sub
运行结果如下:
同时,我们也在代码中看出 date3.Hours 和 date3.TotalHours 的不同。
date2 = date1.AddHours(49) 修改为: date2 = date1.AddHours(-49)
我们来看看结果:
由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供的参考。
学习更多vb.net知识,请参看 vb.net 教程 目录