• VB.NET轻松学会处理时间技巧(一)


           我们在编程中,通常都需要处理时间日期数据,这也是一种比较难于处理的数据类型,因为时间日期类型的结构相当复杂,并且还有一定的规则,如果在定义的时候不符合规则,程序在编译的时候就会出错。在Visual Basic .Net用以处理时间日期类型的结构(Structure)主要是2个,分别为DateTimeTimeSpan,这二个结构都位于命名空间System,并且在Visual Basic .Net中自己也定义了一种数据类型Date,这种数据类型相当于上面提及的DateTime类。这时候可能很多朋友会问了,什么叫结构,它有什么作用?其实结构和类在作用和功能上是非常类似的,它也有构造函数,二者的主要区别如下:

      1. 结构不能包含显式的无参数构造函数。结构成员将自动初始化为它们的默认值。
      2. 结构不能有以下形式的初始值设定项:base。

      其实对于大多数朋友,你具体使用结构和类的时候,完全可以不需要考虑到二者区别,因为二者在使用上几乎相同。

      虽然Visual Basic .Net中提供了Date数据类型来处理时间日期类型,但在实际中往往并不使用它,因为它的定义非常麻烦,加上时间日期类型结构相当复杂,对于很多初学者往往会出现错误。下面就是在Visual Basic .Net中通过Date数据类型定义一个时间日期类型数据变量的语句,就可见其烦杂了:

        Dim s As Date = #12/2/2002 7:00:00 PM#

      在定义Date数据类型时候,必须注意下面三点

      1. Date数值必须以数字符号"#"括起来。
      2. Date数值中的日期数据可有可无,如果有必须符合格式"m/d/yyyy"。
      3. Date数值中的时间数据可有可无,如果有必须和日期数据通过空格分开,并且时分秒之间以":"分开。

      一.DateTime和TimeSpan的关系和区别:
      DateTime和TimeSpan是Visual Basic .Net中用以处理时间日期类型数据的二个主要的结构,这二者的区别在于,DatTime表示一个固定的时间,而TimeSpan表示的是一个时间间隔,即一段时间。在下面介绍的程序示例中,TimeSpan就用以当前时间和给定时间之差。

      二.DateTime和TimeSpan中的常用成员及其说明:

      DateTime结构和TimeSpan结构提供了丰富的方法和属性,通过这些方法和属性,几乎可以直接处理任何时间日期类型数据。

    表01和表02分别是DateTime结构的常用属性和常用方法及其说明:

    属性

    说明

    date

    获取此实例的日期部分。

    day

    获取此实例所表示的日期为该月中的第几天。

    dayofweek

    获取此实例所表示的日期是星期几。

    dayofyear

    获取此实例所表示的日期是该年中的第几天。

    hour

    获取此实例所表示日期的小时部分。

    millisecond

    获取此实例所表示日期的毫秒部分。

    minute

    获取此实例所表示日期的分钟部分。

    month

    获取此实例所表示日期的月份部分。

    now

    创建一个datetime实例,它是此计算机上的当前本地日期和时间。

    second

    获取此实例所表示日期的秒部分。

    timeofday

    获取此实例的当天的时间。

    today

    获取当前日期。

    year

    获取此实例所表示日期的年份部分。

    表01:datetime类的常用属性及其说明

    方法

    说明

    add

    将指定的timespan的值加到此实例的值上。

    adddays

    将指定的天数加到此实例的值上。

    addhours

    将指定的小时数加到此实例的值上。

    addmilliseconds

    将指定的毫秒数加到此实例的值上。

    addminutes

    将指定的分钟数加到此实例的值上。

    addmonths

    将指定的月份数加到此实例的值上。

    addseconds

    将指定的秒数加到此实例的值上。

    addyears

    将指定的年份数加到此实例的值上。

    daysinmonth

    返回指定年份中指定月份的天数。

    isleapyear

    返回指定的年份是否为闰年的指示。

    parse

    将日期和时间的指定字符串表示转换成其等效的datetime实例。

    subtract

    从此实例中减去指定的时间或持续时间。

    tolongdatestring

    将此实例的值转换为其等效的长日期字符串表示形式。

    tolongtimestring

    将此实例的值转换为其等效的长时间字符串表示形式。

    toshorttimestring

    将此实例的值转换为其等效的短时间字符串表示形式。

    toshortdatestring

    将此实例的值转换为其等效的短日期字符串表示形式。


    表02:datetime结构的常用方法及其说明

    表03和表04分别是timespan结构的常用属性和常用方法及其说明:


    属性

    说明

    days

    获取由此实例表示的整天数。

    hours

    获取由此实例表示的整小时数。

    milliseconds

    获取由此实例表示的整毫秒数。

    minutes

    获取由此实例表示的整分钟数。

    seconds

    获取由此实例表示的整秒数。

    ticks

    获取用刻度表示的此实例的值。

    totaldays

    获取以整天数和天的小数部分表示的此实例的值。

    totalhours

    获取以整小时数和小时的小数部分表示的此实例的值。

    totalmilliseconds

    获取以整毫秒数和毫秒的小数部分表示的此实例的值。

    totalminutes

    获取以整分钟数和分钟的小数部分表示的此实例的值。

    totalseconds

    获取以整秒数和秒的小数部分表示的此实例的值。

    表03:timespan结构的常用属性及其说明


    方法

    说明

    add

    将指定的timespan添加到此实例中。

    duration

    返回其值为此实例的绝对值的timespan。

    fromdays

    返回表示指定天数的timespan,其中对天数的指定精确到最接近的毫秒。

    fromhours

    返回表示指定小时数的timespan,其中对小时数的指定精确到最接近的毫秒。

    frommilliseconds

    返回表示指定毫秒数的timespan。

    fromminutes

    返回表示指定分钟数的timespan,其中对分钟数的指定精确到最接近的毫秒。

    fromseconds

    返回表示指定秒数的timespan,其中对秒数的指定精确到最接近的毫秒。

    subtract

    从此实例中减去指定的timespan。

    表04:timespan结构的常用方法及其说明


    =======================下面为实例========================


    三.DateTime和TimeSpan中常用成员的使用方法及其使用技巧:

      
    在了解了DateTime和TimeSpan的常用方法和常用属性后,下面将通过一个示例来掌握上述方法和属性的用法。在下面的示例中将着重介绍下列问题的处理方法:

      1. 判断输入的日期时间字符串的合法性。
      2. DateTime实例之间的运算。
      3. 日期时间数据的获取方法。

      下面是用Visual Basic .Net实现上述功能的示例的主要步骤:

        1. 启动 Visual Studio .Net。
      2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。

       3. 将【项目类型】设置为【Visual Basic项目】。
      4. 将【模板】设置为【Windows窗体应用程序】。
      5. 在【名称】文本框中输入【处理日期时间数据】。
      6. 在【位置】的文本框中输入【E:\VS.NET项目】,然后单击【确定】按钮,这样在"E:\VS.NET项目"目录中就产生了名称为"处理日期时间数据"的文件夹,并在里面创建了名称为【处理日期时间数据】的项目文件。
      7. 把Visual Studio .Net的当前窗口切换到【Form1.vb(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中往Form1窗体中拖入下列组件,并执行相应操作:

      一个TabControl组件(包含三个TabPage组件.)
      十九个Label组件。
      十九个TextBox组件,用以显示时间日期数值。
      三个Button组件,并在这三个Button组件拖入Form1的设计窗体后,分别双击这三个组件,这样系统会在Form1.vb文件分别产生这三个组件的Click时间对应的处理代码。

      8. 按照图01、图02、图03设定设定组件的主要属性


      图01:【处理日期时间数据】设计界面之一



    图02:【处理日期时间数据】设计界面之二


    图03:【处理日期时间数据】设计界面之三


      在完成上面的工作以后,下面就进入程序的功能实现阶段。

        9. 判断输入的日期时间字符串的合法性。为了实现这个功能,首先要掌握把输入的日期时间字符串转换成可供Visual Basic .Net使用的日期时间类型的数据的方法。这个方法就是使用DateTime中的Parse方法,Parse方法能够把一个符合日期时间的字符串转换成一个DateTime实例。下面是一个具体的转换代码:
    Dim dtTemp as System.DateTime = System.DateTime.Parse ( "12/2/2002 13:20:25")
    但如果给定要转换的字符串不合法,程序在执行的时候就会出现异常。程序通过对异常的捕获,来判断给定要转换的字符串合法性。在Visual Basic .Net中捕获异常一般使用的是Try …Catch ….End Try语句。这里要注意的是Try …Catch ….End Try语句是一个非常重要的语句,在后面章节中的很多关键代码部分都会经常的使用到它,通过它的确能够解决很多麻烦的问题。

    下面是在本程序中实现这个功能的具体操作步骤:

      首先把Visual Studio .Net的当前窗口切换到【Form1.vb】,进入Form1.vb文件的编辑界面。然后用下列的代码替换Form1.vb中btnJudge组件的Click事件对应的处理代码。

      

    1. <pre name="code" class="vb"><pre name="code" class="vb">'判断输入日期时间字符串合法性  
    2.     Private Sub btnJudge_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles btnJudge.Click  
    3.         Dim dtMyDate As System.DateTime  
    4.   
    5.         Try  
    6.             dtMyDate = DateTime.Parse(txtDateTime.Text) '转换给定的日期时间字符串  
    7.   
    8.         Catch  
    9.   
    10.             MessageBox.Show("你输入的时间日期字符串不合法!""错误!")  '提示错误  
    11.             txtDateTime.Text = ""  
    12.             Return  
    13.   
    14.         End Try  
    15.     End Sub  

        10. 获取计算机日期时间数据。程序要实现这个功能非常简单,只需要掌握表01和表02中列出的DateTime常用属性、方法的使用方法就能够方便完成了。具体到本程序具体的操作是用下列代码替换Form1.vb中btnDateTimeNow的Click事件对应的处理代码:

    
    
    
    

    1. '获得计算机日期、时间  
    2.     Private Sub btnDateTimeNow_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles btnDateTimeNow.Click  
    3.         '创建实例,此实例存放当前日期和时间  
    4.         Dim dMyDate As DateTime = DateTime.Now  
    5.   
    6.         '显示当前日期和时间  
    7.         txtDateTimeNow.Text = dMyDate.ToString()  
    8.   
    9.         '显示当前日期  
    10.         txtDateNow.Text = dMyDate.Date  
    11.   
    12.         '显示当前年度  
    13.         txtYear.Text = dMyDate.Year  
    14.   
    15.         '显示当前月份  
    16.         txtMonth.Text = dMyDate.Month  
    17.   
    18.         '显示日号  
    19.         txtDay.Text = dMyDate.Day  
    20.   
    21.         '显示当前天是一年中的第多少天  
    22.         txtDayofyear.Text = dMyDate.DayOfYear  
    23.   
    24.         '显示当前天是本星期中的第多少天  
    25.         txtWeek.Text = dMyDate.DayOfWeek  
    26.   
    27.         '以长日期形式来显示日期  
    28.         txtDateLong.Text = dMyDate.ToLongDateString  
    29.   
    30.         '以短日期形式来显示日期  
    31.         txtDateShort.Text = dMyDate.ToShortDateString  
    32.   
    33.         '显示当前时间  
    34.         txtTimeNow.Text = dMyDate.TimeOfDay.ToString()  
    35.   
    36.         '显示当前时间的小时  
    37.         txtHour.Text = dMyDate.Hour  
    38.   
    39.         '显示当前时间的分钟  
    40.         txtMinute.Text = dMyDate.Minute  
    41.   
    42.         '显示当前时间的秒  
    43.         txtSecond.Text = dMyDate.Second  
    44.   
    45.         '显示当前时间的毫秒  
    46.         txtMillisecond.Text = dMyDate.Millisecond  
    47.   
    48.         '以长时间形式来显示当前时间  
    49.         txtTimeLong.Text = dMyDate.ToLongTimeString  
    50.   
    51.         '以短时间形式来显示当前时间  
    52.         txtTimeShort.Text = dMyDate.ToShortTimeString  
    53.     End Sub  

        11. 日期时间数据的运算。在下面介绍的代码是实现二个DateTime实例之差,即当前的时间和给定的时间之差。解决的步骤是首先判断给定的日期时间字符串的合法性,如果不合法,则返回。如果合法,则以此来创建DateTime实例dtMyDate。然后dtMyDate调用其Subtract方法减去当前的时间,并存放到TimeSpan实例tsTemp。tsTemp调用其Duration方法把二者之差的绝对值显示出来。具体到程序中的实现方法是用下列代码替换Form1.vb中的btnOK的Click事件的处理代码:

    1. <pre name="code" class="vb">'输入时间与系统时间之差  
    2.     Private Sub btnOK_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles btnOK.Click  
    3.         Dim tsTemp As TimeSpan  
    4.         Dim dtMydate As DateTime  
    5.         '判断输入的时间日期字符串的合法性  
    6.         Try  
    7.             dtMydate = DateTime.Parse(txtDateTimeEnter.Text)  
    8.         Catch  
    9.             MessageBox.Show("输入的时间日期字符串不合法""错误!")  
    10.             Return  
    11.   
    12.         End Try  
    13.   
    14.         '两个DateTime实例相减  
    15.         tsTemp = dtMydate.Subtract(DateTime.Now)  
    16.   
    17.         '取两个各DateTime之差绝对值,并显示出来  
    18.         txtTimeDifference.Text = tsTemp.Duration.ToString()  
    19.     End Sub  


    
        至此在上述步骤都正确执行,并成功保存后,【处理日期时间数据】项目的全部工作就完成了。图04、图05和图06分别是【处理日期时间数据】项目编译后的运行界面:


    图04:【处理日期时间数据】运行界面之一



    图05:【处理日期时间数据】运行界面之二



    图06:【处理日期时间数据】运行界面之三


    四.小结:

      本文介绍在Visual Basic .Net中日期时间类型数据的处理方法及在处理这些数据时的一些注意事项和技巧。以下就是本文中的知识点:

      1. 结构和类的区别。
      2. 用Date变量定义日期时间,及其注意事项。
      3. DateTime和TimeSpan的主要区别,和二者主要的成员及其简单说明。
      4. 判断给定时间日期的合法性。
      5. 日期时间类型数据(DateTime实例)的运算。
      6. 日期时间及其相关数值的获取。

  • 相关阅读:
    通过secureCRT连接虚拟机VMware workstation问题记录
    redis 数据类型
    windows下redis安装及配置
    js获取response头信息
    flask token认证
    IDEA 双击只选择了一个变量的某部分单词
    IDEA 对spring boot Maven 项目打 Jar 包
    ElasticSearch 7.3.0 查询、修改、删除 文档操作
    ElasticSearch Kibana 创建索引,删除索引,查看索引配置
    elasticsearch-analysis-ik windows 环境 IK 中文分词器 的 下载 和 安装
  • 原文地址:https://www.cnblogs.com/lilongsheng/p/3226112.html
Copyright © 2020-2023  润新知