VB.NET時間日期資料處理及技巧

來源:互聯網
上載者:User
技巧|資料 我們在編程中,通常都需要處理時間日期資料,這也是一種比較難於處理的資料類型,因為時間日期類型的結構相當複雜,並且還有一定的規則,如果在定義的時候不符合規則,程式在編譯的時候就會出錯。在Visual Basic .Net用以處理時間日期類型的結構(Structure)主要是2個,分別為DateTime和TimeSpan,這二個結構都位於命名空間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組件,分別是Button1至Button3,並在這三個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中Button3組件的Click事件對應的處理代碼。

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 )
 '轉換給定的日期時間字串
Catch
 MessageBox.Show ( "輸入的時間日期文字不合法!", "錯誤!" )
 '提示出錯
 TextBox19.Text = ""
 Return
End Try
'以上是判斷輸入日期時間字串合法性的典型代碼
End Sub
  10. 擷取電腦日期時間資料。程式要實現這個功能非常簡單,只需要掌握表01和表02中列出的DateTime常用屬性、方法的使用方法就能夠方便完成了。具體到本程式具體的操作是用下列代碼替換Form1.vb中Button2的Click事件對應的處理代碼:

Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.Click
 Dim dMyDate As DateTime = DateTime.Now
 '建立執行個體,此執行個體存放當前日期和時間
 TextBox1.Text = dMyDate.ToString ( )
 '顯示當前日期和時間
 TextBox2.Text = dMyDate.Date
 '顯示當前日期
 TextBox3.Text = dMyDate.Year
 '顯示年度
 TextBox4.Text = dMyDate.Month
 '顯示月份
 TextBox5.Text = dMyDate.Day
 '顯示日號
 TextBox6.Text = dMyDate.DayOfYear
 '顯示當前天是一年中的第多少天
 TextBox7.Text = dMyDate.DayOfWeek
 '顯示當前天是本星期中的第多少天
 TextBox8.Text = dMyDate.ToLongDateString
 '以長日期形式來顯示日期
 TextBox9.Text = dMyDate.ToShortDateString
 '以短日期形式來顯示日期
 TextBox18.Text = dMyDate.TimeOfDay.ToString ( )
 '顯示目前時間
 TextBox17.Text = dMyDate.Hour
 '顯示目前時間的小時
 TextBox16.Text = dMyDate.Minute
 '顯示目前時間的分鐘
 TextBox15.Text = dMyDate.Second
 '顯示目前時間的秒
 TextBox14.Text = dMyDate.Millisecond
 '顯示目前時間的毫秒
 TextBox13.Text = dMyDate.ToLongTimeString
 '以長時間形式來顯示目前時間
 TextBox12.Text = dMyDate.ToShortTimeString
 '以短時間形式來顯示目前時間
End Sub
  11. 日期時間資料的運算。在下面介紹的代碼是實現二個DateTime執行個體之差,即當前的時間和給定的時間之差。解決的步驟是首先判斷給定的日期時間字串的合法性,如果不合法,則返回。如果合法,則以此來建立DateTime執行個體dtMyDate。然後dtMyDate調用其Subtract方法減去當前的時間,並存放到TimeSpan執行個體tsTemp。tsTemp調用其Duration方法把二者之差的絕對值顯示出來。具體到程式中的實現方法是用下列代碼替換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 ( "輸入的時間日期文字不合法!" , "錯誤!" )
  Return
 End Try
 '判斷輸入的時間日期文字的合法性
 tsTemp = dtMyDate.Subtract ( DateTime.Now )
 '二個DateTime執行個體相減
 TextBox11.Text = tsTemp.Duration.ToString ( )
 '取二個DateTime之差絕對值,並顯示出來
End Sub
  至此在上述步驟都正確執行,並成功儲存後,【處理日期時間資料】項目的全部工作就完成了。圖04、圖05和圖06分別是【處理日期時間資料】項目編譯後的運行介面:


圖04:【處理日期時間資料】運行介面之一


圖05:【處理日期時間資料】運行介面之二


圖06:【處理日期時間資料】運行介面之三

  四.小結:

  本文介紹在Visual Basic .Net中日期時間類型資料的處理方法及在處理這些資料時的一些注意事項和技巧。以下就是本文中的知識點:

  1. 結構和類的區別。

  2. 用Date變數定義日期時間,及其注意事項。

  3. DateTime和TimeSpan的主要區別,和二者主要的成員及其簡單說明。

  4. 判斷給定時間日期的合法性。
  
  5. 日期時間類型資料(DateTime執行個體)的運算。

  6. 日期時間及其相關數值的擷取。

  如果您通過本文的介紹掌握了以上內容,那麼本文的目的就算完成了,就讓我們下一節再見吧!




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.