可惜的是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:
@H_@R_502_448@_53@ | 字符串值@H_@R_502_448@_53@ | 时间差额的单位@H_@R_502_448@_53@ |
DateInterval.Day@H_@R_502_448@_53@ | "d"@H_@R_502_448@_53@ | 天@H_@R_502_448@_53@ |
DateInterval.DayOfYear@H_@R_502_448@_53@ | "y"@H_@R_502_448@_53@ | 天@H_@R_502_448@_53@ |
DateInterval.Hour@H_@R_502_448@_53@ | "h"@H_@R_502_448@_53@ | 小时@H_@R_502_448@_53@ |
DateInterval.Minute@H_@R_502_448@_53@ | "n"@H_@R_502_448@_53@ | 分钟@H_@R_502_448@_53@ |
DateInterval.Month@H_@R_502_448@_53@ | "m"@H_@R_502_448@_53@ | 月份@H_@R_502_448@_53@ |
DateInterval.Quarter@H_@R_502_448@_53@ | "q"@H_@R_502_448@_53@ | 季度@H_@R_502_448@_53@ |
DateInterval.Second@H_@R_502_448@_53@ | "s"@H_@R_502_448@_53@ | 秒@H_@R_502_448@_53@ |
DateInterval.Weekday@H_@R_502_448@_53@ | "w"@H_@R_502_448@_53@ | 周@H_@R_502_448@_53@ |
DateInterval.WeekOfYear@H_@R_502_448@_53@ | "ww"@H_@R_502_448@_53@ | 日历周@H_@R_502_448@_53@ |
DateInterval.Year@H_@R_502_448@_53@ | "yyyy"@H_@R_502_448@_53@ | 年份 @H_@R_502_448@_53@ |
如果在现有日期时间基础上增加或减少求得新的日期时间呢?
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 教程 目录