VB.NET学习笔记:数据类型——时间日期DateTime和TimeSpan结构

旧VB6.0是用Date数据类型来处理日期时间的,Visual Basic .Net也可以用Date数据类型,但建议使用DateTime和TimeSpan结构来处理日期时间。
Date数据类型和DateTime结构没有本质的区别,之所以选用DateTime结构是基于Date数据类型的定义比较麻烦。
如:

Dim Date1 As Date = #1/11/2019 11:00:00 AM#

可见,Date数值必须以数字符号"#“括起来,日期数据必须符合格式"m/d/yyyy”,时间数据必须和日期数据通过空格分开并且时分秒之间以":"分开。

帮助页面: DateTime TimeSpan

一、DateTime和TimeSpan结构的区别

DateTime表示时刻,通常以日期和当天的时间表示。TimeSpan表示时间间隔,即两时刻之差。

二、DateTime和TimeSpan的声明和赋值

给DateTime赋值

测试代码如下:

        '声明变量
        Dim date1 As DateTime

        '构造函数
        date1 = New DateTime(2019, 1, 11) '年、月、日
        Console.WriteLine("date1:" & date1.ToString)
        Dim date2 As New DateTime(2019, 1, 11, 9, 50, 30) '年、月、日、时、分、秒
        Console.WriteLine("date2:" & date2.ToString)

        '默认无参数构造函数
        Dim date3 As DateTime
        Console.WriteLine("date3:" & date3.ToString)
        Dim date4 As DateTime = New DateTime()
        Console.WriteLine("date4:" & date4.ToString)

        '属性
        Dim date5 As DateTime = DateTime.Now '计算机上的当前日期和时间,表示为本地时间
        Console.WriteLine("date5:" & date5.ToString)
        Dim date6 As DateTime = DateTime.UtcNow '计算机上的当前日期和时间,表示为协调通用时间 (UTC)
        Console.WriteLine("date6:" & date6.ToString)
        Dim date7 As DateTime = DateTime.Today '当前日期
        Console.WriteLine("date7:" & date7.ToString)

        'Add方法
        Dim date8 As DateTime = date7.AddHours(2) 'date5+2小时后的时刻
        Console.WriteLine("date8:" & date8.ToString)

        'TryParse方法
        Dim date9 As DateTime
        Dim str As String = "01/11/2019 09:57:32.8"
        If DateTime.TryParse(str, date9) Then
            Console.WriteLine("date9:" & date9.ToString)
        Else
            Console.WriteLine("转换失败")
        End If

测试结果如图:
DateTime赋值
在内部,所有DateTime值均为 0001 年 1 月 1 日午夜 12:00:00 以来所经历的计时周期 (100 纳秒间隔数) 数。所以调用无参数构造函数将返回初始值0001/1 / 1 00:00:00 。

给TimeSpan赋值

测试代码如下:

        '声明
        Dim TimeSpan1 As TimeSpan
        Console.WriteLine("未初始化的TimeSpan1:" & TimeSpan1.ToString)

        '构造函数
        TimeSpan1 = New TimeSpan()
        Console.WriteLine("默认构造函数的TimeSpan1:" & TimeSpan1.ToString)
        Dim TimeSpan2 As TimeSpan = New TimeSpan(10, 21, 56) '小时、分钟、秒
        Console.WriteLine("TimeSpan2:" & TimeSpan2.ToString)
        Dim TimeSpan3 As TimeSpan = New TimeSpan(2, 10, 21, 56) '天、小时、分钟、秒
        Console.WriteLine("TimeSpan3:" & TimeSpan3.ToString)

        '方法
        Dim date1 As New DateTime(2019, 1, 11, 9, 50, 30)
        Dim date2 As New DateTime(2019, 1, 12, 10, 52, 30)

        Dim TimeSpan4 As TimeSpan = date2 - date1
        Console.WriteLine("TimeSpan4:" & TimeSpan4.ToString)
        Dim TimeSpan5 As TimeSpan = date2.Subtract(date1)
        Console.WriteLine("TimeSpan5:" & TimeSpan5.ToString)

测试结果如图:
在这里插入图片描述
通过调用其默认构造函数为TimeSpan对象赋值,其值为TimeSpan.Zero。

三、使用示例

示例代码:

        '输入日期字符串
        Console.WriteLine("请输入符合日期格式的字符串:(如:1/11/2019 8:30:52 AM)")
line:   Dim Str As String = Console.ReadLine()

        '将日期字符串转换成DateTime数据类型
        Dim date1 As DateTime
        If DateTime.TryParse(Str, date1) Then
            Console.WriteLine("您输入的日期和时间为:" & date1.ToString)
        Else
            Console.WriteLine("格式错误,请重新输入!")
            GoTo line
        End If

        '显示date1相关属性
        Console.WriteLine()
        Console.WriteLine("date1相关属性")
        Console.WriteLine("您输入的日期:" & date1.Date.ToString)
        Console.WriteLine("您输入的日期是该年中第几天:" & date1.DayOfYear.ToString)
        Console.WriteLine()
        Console.WriteLine("您输入的秒:" & date1.Second.ToString)
        Console.WriteLine("您输入的分钟:" & date1.Minute.ToString)
        Console.WriteLine("您输入的小时:" & date1.Hour.ToString)
        Console.WriteLine("你输入的日期是星期几:" & date1.DayOfWeek.ToString)
        Console.WriteLine("您输入的日:" & date1.Day.ToString)
        Console.WriteLine("您输入的月份:" & date1.Month.ToString)
        Console.WriteLine("您输入的年份:" & date1.Year.ToString)

        'DateTime相关方法
        Console.WriteLine()
        Console.WriteLine("DateTime相关方法:")
        Console.WriteLine("以长日期形式来显示日期:" & date1.ToLongDateString.ToString)
        Console.WriteLine("以短日期形式来显示日期:" & date1.ToShortDateString.ToString)
        Console.WriteLine("以长时间形式来显示时间:" & date1.ToLongTimeString.ToString)
        Console.WriteLine("以短时间形式来显示时间:" & date1.ToShortTimeString.ToString)
        Console.WriteLine()

        '日期时间数据的相关运算
        Console.WriteLine("日期时间数据的相关运算:")
        Dim date2 As DateTime = DateTime.Now '获取当前日期和时间
        Dim TimeSpan1 As TimeSpan = date2.Subtract(date1) 'date2-date1
        Console.WriteLine("相减运算结果的绝对值:" & TimeSpan1.Duration.ToString)

        'TimeSpan1相关属性
        Console.WriteLine()
        Console.WriteLine("TimeSpan1相关属性")
        Console.WriteLine("显示时间间隔的天数部分:" & TimeSpan1.Days.ToString)
        Console.WriteLine("显示时间间隔的小时部分:" & TimeSpan1.Hours.ToString)
        Console.WriteLine("显示时间间隔的分钟部分:" & TimeSpan1.Minutes.ToString)
        Console.WriteLine("显示时间间隔的秒数部分:" & TimeSpan1.Seconds.ToString)
        Console.WriteLine("显示时间间隔的这毫秒数部分:" & TimeSpan1.Milliseconds.ToString)
        Console.WriteLine()
        Console.WriteLine("以天为单位显示时间间隔:" & TimeSpan1.TotalDays.ToString)
        Console.WriteLine("以小时为单位显示时间间隔:" & TimeSpan1.TotalHours.ToString)
        Console.WriteLine("以分钟为单位显示时间间隔:" & TimeSpan1.TotalMinutes.ToString)
        Console.WriteLine("以秒为单位显示时间间隔:" & TimeSpan1.TotalSeconds.ToString)
        Console.WriteLine("以毫秒为单位显示时间间隔:" & TimeSpan1.TotalMilliseconds.ToString)

测试结果如图:
在这里插入图片描述
代码说明:
1、将日期时间的字符串表现形式转换成DateTime数据类型,程序加入了判断输入是否合法的方法。
2、通过获取DateTime的相关属性并以字符串形式呈现。
3、执行日期时间运算并获取TimeSpan的相关属性,然后以字符串形式呈现运算结果。
4、更多有关日期时间格式化,请阅读《数字、日期时间格式化(字符串)

猜你喜欢

转载自blog.csdn.net/zyjq52uys/article/details/86286545
今日推荐