vb.net 教程 1-8 日期时间类型2

前端之家收集整理的这篇文章主要介绍了vb.net 教程 1-8 日期时间类型2前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
可惜的是TimeSpan没有提供TimeSpan.Months这样的方法。那么还有没有办法求相差的月份呢?

vb.net还提供了DateDiff()方法

DateDiff 属于 Microsoft.VisualBasic 命名空间,我个人理解是.net为了兼容之前的vb专门建立的命名空间。
我们来看看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

运行结果如下:


DateDiff()的第一个参数是一个字符串或者是DateInterval 枚举,包括DateInterval.Year 等。
例如:
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。。。。
例如以下代码在现在时间基础上增加25小时:
    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 的不同。
最后附注说明的是,不要以为Add就是增加,如果里面的参数是负数,那么就是减少了,例如上述代码
date2 = date1.AddHours(49) 修改为: date2 = date1.AddHours(-49)
我们来看看结果:


由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供的参考。

学习更多vb.net知识,请参看 vb.net 教程 目录

猜你在找的VB相关文章