首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

VB.NET DateTime 建構完全指南:四種實例化方式、軍用時間、預設值行為與 ToString 格式化

     編輯:更多程式設計知識

VB.NET Date 結構 (對應 System.DateTime) 提供多種建構路徑。本文詳細說明四種常見實例化方式、參數含義、預設時間行為、24/12 小時制對照,並附上格式化輸出最佳實務。

四種建構方式對照表

語法範例結果 (預設格式)說明
日期常值#1/2/2007#2007/1/2 上午 12:00:00編譯期常數,唯讀,格式固定 M/d/yyyy
建構函式 (年月日)New Date(2007, 1, 2)2007/1/2 上午 12:00:00時間預設 0:0:0 (午夜)
建構函式 (含時分秒)New Date(2007, 2, 3, 3, 1, 59)2007/2/3 上午 03:01:5924 小時制 (軍用時間)
建構函式 (下午時間)New Date(2007, 2, 3, 15, 1, 59)2007/2/3 下午 03:01:5915 = 3 PM

完整程式碼範例


Private Sub DateTimeCombination()
    Dim dt1 As Date = #1/2/2007#
    Dim dt2 As New Date(2007, 1, 2)
    Dim dt3 As New Date(2007, 2, 3, 3, 1, 59)   ' 03:01:59 AM
    Dim dt4 As New Date(2007, 2, 3, 15, 1, 59)  ' 03:01:59 PM

    MsgBox("dt1: " & dt1.ToString())
    MsgBox("dt2: " & dt2.ToString())
    MsgBox("dt3: " & dt3.ToString())
    MsgBox("dt4: " & dt4.ToString())
End Sub

關鍵行為解析

  • 日期常值 #...#:僅限日期部分,時間**永遠為 00:00:00** (午夜)。不可在常值中指定時間 (如 #1/2/2007 3:59 PM# 為語法錯誤)。
  • 建構函式省略時間:New Date(y, m, d) 等同 New Date(y, m, d, 0, 0, 0)。
  • 時元參數為 24 小時制:0~23,12 為中午,13~23 為下午 1~11 點。
  • 毫秒精度:另提供 New Date(y, m, d, h, m, s, ms) 多載。
  • Kind 屬性:以上建構方式產生 DateTimeKind.Unspecified。跨時區運算請明確指定 DateTime.SpecifyKind(dt, DateTimeKind.Utc/Local)。

格式化輸出最佳實務


' 標準格式字串
dt.ToString("yyyy/MM/dd HH:mm:ss")     ' 2007/02/03 15:01:59
dt.ToString("yyyy/MM/dd hh:mm:ss tt")  ' 2007/02/03 03:01:59 PM
dt.ToString("D")                       ' 長日期格式 (依文化特性)
dt.ToString("T")                       ' 長時間格式

' 自訂文化特性
dt.ToString("yyyy/MM/dd HH:mm:ss", New Globalization.CultureInfo("en-US"))
dt.ToString("yyyy/MM/dd HH:mm:ss", Globalization.CultureInfo.InvariantCulture)  ' 固定格式,適合日誌/檔名

常見陷阱

效能提示

  • Date 為實質型別,堆疊配置,零 GC 壓力。
  • 大量建構時重用 DateTime 變數而非重新 New。
  • 格式化輸出為熱點路徑時,考慮緩存 CultureInfo 物件或使用 String.Format 批次處理。

掌握上述建構與格式化模式,即能精準處理 VB.NET 專案中所有日期時間需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
錯誤寫法問題正確寫法
Dim d As Date = "2007/1/2"字串隱性轉換視文化特性而定,易失效Date.ParseExact("2007/1/2", "yyyy/M/d", Nothing)
#2007/1/2 15:00#日期常值不支援時間部分New Date(2007, 1, 2, 15, 0, 0)
New Date(2007, 2, 30)無效日期拋出 ArgumentOutOfRangeException預先驗證或用 DateTime.DaysInMonth