电竞比分网-中国电竞赛事及体育赛事平台

分享

VB.NET日期與時間數(shù)據(jù)處理及技巧

 趨明 2012-02-16

我們在編程中,通常都需要處理時間日期數(shù)據(jù),這也是一種比較難于處理的數(shù)據(jù)類型,因為時間日期類型的結(jié)構(gòu)相當(dāng)復(fù)雜,并且還有一定的規(guī)則,如果在定義的時候不符合規(guī)則,程序在編譯的時候就會出錯。在Visual Basic .Net用以處理時間日期類型的結(jié)構(gòu)(Structure)主要是2個,分別為DateTime和TimeSpan,這二個結(jié)構(gòu)都位于命名空間System,并且在Visual Basic .Net中自己也定義了一種數(shù)據(jù)類型Date,這種數(shù)據(jù)類型相當(dāng)于上面提及的DateTime類。這時候可能很多朋友會問了,什么叫結(jié)構(gòu),它有什么作用?其實結(jié)構(gòu)和類在作用和功能上是非常類似的,它也有構(gòu)造函數(shù),二者的主要區(qū)別如下:

  

  1. 結(jié)構(gòu)不能包含顯式的無參數(shù)構(gòu)造函數(shù)。結(jié)構(gòu)成員將自動初始化為它們的默認值。

  

  2. 結(jié)構(gòu)不能有以下形式的初始值設(shè)定項:base。

  

  其實對于大多數(shù)朋友,你具體使用結(jié)構(gòu)和類的時候,完全可以不需要考慮到二者區(qū)別,因為二者在使用上幾乎相同。

  

  雖然Visual Basic .Net中提供了Date數(shù)據(jù)類型來處理時間日期類型,但在實際中往往并不使用它,因為它的定義非常麻煩,加上時間日期類型結(jié)構(gòu)相當(dāng)復(fù)雜,對于很多初學(xué)者往往會出現(xiàn)錯誤。下面就是在Visual Basic .Net中通過Date數(shù)據(jù)類型定義一個時間日期類型數(shù)據(jù)變量的語句,就可見其煩雜了:

  

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

  

  在定義Date數(shù)據(jù)類型時候,必須注意下面三點:

  

  1. Date數(shù)值必須以數(shù)字符號"#"括起來。

  

  2. Date數(shù)值中的日期數(shù)據(jù)可有可無,如果有必須符合格式"m/d/yyyy"。

  

  3. Date數(shù)值中的時間數(shù)據(jù)可有可無,如果有必須和日期數(shù)據(jù)通過空格分開,并且時分秒之間以":"分開。

  

  一.DateTime和TimeSpan的關(guān)系和區(qū)別:

  DateTime和TimeSpan是Visual Basic .Net中用以處理時間日期類型數(shù)據(jù)的二個主要的結(jié)構(gòu),這二者的區(qū)別在于,DatTime表示一個固定的時間,而TimeSpan表示的是一個時間間隔,即一段時間。在下面介紹的程序示例中,TimeSpan就用以當(dāng)前時間和給定時間之差。

  

  二.DateTime和TimeSpan中的常用成員及其說明:

  DateTime結(jié)構(gòu)和TimeSpan結(jié)構(gòu)提供了豐富的方法和屬性,通過這些方法和屬性,幾乎可以直接處理任何時間日期類型數(shù)據(jù)。表01和表02分別是DateTime結(jié)構(gòu)的常用屬性和常用方法及其說明:

    

    

    

    

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

  在了解了DateTime和TimeSpan的常用方法和常用屬性后,下面將通過一個示例來掌握上述方法和屬性的用法。在下面的示例中將著重介紹下列問題的處理方法:

  

  1. 判斷輸入的日期時間字符串的合法性。

  

  2. DateTime實例之間的運算。

  

  3. 日期時間數(shù)據(jù)的獲取方法。

  

  下面是用Visual Basic .Net實現(xiàn)上述功能的示例的主要步驟:

  

  1. 啟動Visual Studio .Net。

  

  2. 選擇菜單【文件】|【新建】|【項目】后,彈出【新建項目】對話框。

  

  3. 將【項目類型】設(shè)置為【Visual Basic項目】。

  

  4. 將【模板】設(shè)置為【W(wǎng)indows應(yīng)用程序】。

  

  5. 在【名稱】文本框中輸入【處理日期時間數(shù)據(jù)】。

  

  6. 在【位置】的文本框中輸入【E:\VS.NET項目】,然后單擊【確定】按鈕,這樣在"E:\VS.NET項目"目錄中就產(chǎn)生了名稱為"處理日期時間數(shù)據(jù)"的文件夾,并在里面創(chuàng)建了名稱為【處理日期時間數(shù)據(jù)】的項目文件。

  

  7. 把Visual Studio .Net的當(dāng)前窗口切換到【Form1.vb(設(shè)計)】窗口,并從【工具箱】中的【W(wǎng)indows窗體組件】選項卡中往Form1窗體中拖入下列組件,并執(zhí)行相應(yīng)操作:

  

  一個TabControl組件。

  三個TabPage組件。

  十九個Label組件。

  十九個TextBox組件,用以顯示時間日期數(shù)值。

  三個Button組件,分別是Button1至Button3,并在這三個Button組件拖入Form1的設(shè)計窗體后,分別雙擊這三個組件,這樣系統(tǒng)會在Form1.vb文件分別產(chǎn)生這三個組件的Click時間對應(yīng)的處理代碼。

  

  8. 按照圖01、圖02、圖03設(shè)定設(shè)定組件的主要屬性

    

   圖01:【處理日期時間數(shù)據(jù)】設(shè)計界面之一

    

   圖02:【處理日期時間數(shù)據(jù)】設(shè)計界面之二

    

   圖03:【處理日期時間數(shù)據(jù)】設(shè)計界面之三

  

  在完成上面的工作以后,下面就進入程序的功能實現(xiàn)階段。

  

  9. 判斷輸入的日期時間字符串的合法性。為了實現(xiàn)這個功能,首先要掌握把輸入的日期時間字符串轉(zhuǎn)換成可供Visual Basic .Net使用的日期時間類型的數(shù)據(jù)的方法。這個方法就是使用DateTime中的Parse方法,Parse方法能夠把一個符合日期時間的字符串轉(zhuǎn)換成一個DateTime實例。下面是一個具體的轉(zhuǎn)換代碼:

  Dim dtTemp as System.DateTime = System.DateTime.Parse ( "12/2/2002 13:20:25")

  但如果給定要轉(zhuǎn)換的字符串不合法,程序在執(zhí)行的時候就會出現(xiàn)異常。程序通過對異常的捕獲,來判斷給定要轉(zhuǎn)換的字符串合法性。在Visual Basic .Net中捕獲異常一般使用的是Try …Catch ….End Try語句。這里要注意的是Try …Catch ….End Try語句是一個非常重要的語句,在后面章節(jié)中的很多關(guān)鍵代碼部分都會經(jīng)常的使用到它,通過它的確能夠解決很多麻煩的問題。

  下面是在本程序中實現(xiàn)這個功能的具體操作步驟:

  

  首先把Visual Studio .Net的當(dāng)前窗口切換到【Form1.vb】,進入Form1.vb文件的編輯界面。然后用下列的代碼替換Form1.vb中Button3組件的Click事件對應(yīng)的處理代碼。

  

  Private Sub Button3_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button3.Click

  Dim dtMyDate As System.DateTime

  Try

  dtMyDate = DateTime.Parse ( TextBox19.Text )

  '轉(zhuǎn)換給定的日期時間字符串

  Catch

  MessageBox.Show ( "輸入的時間日期字符串不合法!", "錯誤!" )

  '提示出錯

  TextBox19.Text = ""

  Return

  End Try

  '以上是判斷輸入日期時間字符串合法性的典型代碼

  End Sub

  

  10. 獲取計算機日期時間數(shù)據(jù)。程序要實現(xiàn)這個功能非常簡單,只需要掌握表01和表02中列出的DateTime常用屬性、方法的使用方法就能夠方便完成了。具體到本程序具體的操作是用下列代碼替換Form1.vb中Button2的Click事件對應(yīng)的處理代碼:

  

  Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.Click

  Dim dMyDate As DateTime = DateTime.Now

  '創(chuàng)建實例,此實例存放當(dāng)前日期和時間

  TextBox1.Text = dMyDate.ToString ( )

  '顯示當(dāng)前日期和時間

  TextBox2.Text = dMyDate.Date

  '顯示當(dāng)前日期

  TextBox3.Text = dMyDate.Year

  '顯示年度

  TextBox4.Text = dMyDate.Month

  '顯示月份

  TextBox5.Text = dMyDate.Day

  '顯示日號

  TextBox6.Text = dMyDate.DayOfYear

  '顯示當(dāng)前天是一年中的第多少天

  TextBox7.Text = dMyDate.DayOfWeek

  '顯示當(dāng)前天是本星期中的第多少天

  TextBox8.Text = dMyDate.ToLongDateString

  '以長日期形式來顯示日期

  TextBox9.Text = dMyDate.ToShortDateString

  '以短日期形式來顯示日期

  TextBox18.Text = dMyDate.TimeOfDay.ToString ( )

  '顯示當(dāng)前時間

  TextBox17.Text = dMyDate.Hour

  '顯示當(dāng)前時間的小時

  TextBox16.Text = dMyDate.Minute

  '顯示當(dāng)前時間的分鐘

  TextBox15.Text = dMyDate.Second

  '顯示當(dāng)前時間的秒

  TextBox14.Text = dMyDate.Millisecond

  '顯示當(dāng)前時間的毫秒

  TextBox13.Text = dMyDate.ToLongTimeString

  '以長時間形式來顯示當(dāng)前時間

  TextBox12.Text = dMyDate.ToShortTimeString

  '以短時間形式來顯示當(dāng)前時間

  End Sub

  

  11. 日期時間數(shù)據(jù)的運算。在下面介紹的代碼是實現(xiàn)二個DateTime實例之差,即當(dāng)前的時間和給定的時間之差。解決的步驟是首先判斷給定的日期時間字符串的合法性,如果不合法,則返回。如果合法,則以此來創(chuàng)建DateTime實例dtMyDate。然后dtMyDate調(diào)用其Subtract方法減去當(dāng)前的時間,并存放到TimeSpan實例tsTemp。tsTemp調(diào)用其Duration方法把二者之差的絕對值顯示出來。具體到程序中的實現(xiàn)方法是用下列代碼替換Form1.vb中的Button2的Click事件的處理代碼:

  

  Private Sub Button2_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button2.Click

  Dim tsTemp As TimeSpan

  Dim dtMyDate As DateTime

  Try

  dtMyDate = DateTime.Parse ( TextBox10.Text )

  Catch

  MessageBox.Show ( "輸入的時間日期字符串不合法!" , "錯誤!" )

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多