VB.Net - 日期和時間



您編寫的多數軟體都需要實現某種形式的日期函式,以返回當前日期和時間。日期在日常生活中如此常見,以至於在不加思考的情況下就能輕鬆地使用它們。VB.Net 還提供了強大的日期運算工具,使日期操作變得容易。

Date 資料型別包含日期值、時間值或日期和時間值。Date 的預設值為 0:00:00(午夜),即公元 1 年 1 月 1 日。等效的 .NET 資料型別為 System.DateTime

DateTime 結構表示時間中的一個瞬間,通常表示為日期和時間。

'Declaration
<SerializableAttribute> _
Public Structure DateTime _
   Implements IComparable, IFormattable, IConvertible, ISerializable,  
   IComparable(Of DateTime), IEquatable(Of DateTime)

您還可以從 DateAndTime 類獲取當前日期和時間。

DateAndTime 模組包含日期和時間操作中使用的過程和屬性。

'Declaration
<StandardModuleAttribute> _
Public NotInheritable Class DateAndTime

注意

DateTime 結構和 DateAndTime 模組都包含像 NowToday 這樣的屬性,因此初學者常常感到困惑。DateAndTime 類屬於 Microsoft.VisualBasic 名稱空間,而 DateTime 結構屬於 System 名稱空間。
因此,使用後者將有助於您將程式碼移植到其他 .Net 語言(如 C#)。但是,DateAndTime 類/模組包含 Visual Basic 中所有可用的舊版日期函式。

DateTime 結構的屬性和方法

下表列出了 DateTime 結構中一些常用的 屬性

序號 屬性 描述
1 Date 獲取此例項的日期部分。
2 Day 獲取此例項代表的月份中的某一天。
3 DayOfWeek 獲取此例項代表的星期幾。
4 DayOfYear 獲取此例項代表的年中的某一天。
5 Hour 獲取此例項代表的日期的小時部分。
6 Kind 獲取一個值,該值指示此例項表示的時間是基於本地時間、協調世界時 (UTC) 還是兩者都不是。
7 Millisecond 獲取此例項代表的日期的毫秒部分。
8 Minute 獲取此例項代表的日期的分鐘部分。
9 Month 獲取此例項代表的日期的月份部分。
10 Now 獲取一個 DateTime 物件,該物件設定為這臺計算機上的當前日期和時間,表示為本地時間。
11 Second 獲取此例項代表的日期的秒部分。
12 Ticks 獲取表示此例項的日期和時間的刻度數。
13 TimeOfDay 獲取此例項的一天中的時間。
14 Today 獲取當前日期。
15 UtcNow 獲取一個 DateTime 物件,該物件設定為這臺計算機上的當前日期和時間,表示為協調世界時 (UTC)。
16 Year 獲取此例項代表的日期的年份部分。

下表列出了 DateTime 結構中一些常用的 方法

序號 方法名稱和描述
1

Public Function Add (value As TimeSpan) As DateTime

返回一個新的 DateTime,該 DateTime 將指定 TimeSpan 的值新增到此例項的值。

2

Public Function AddDays ( value As Double) As DateTime

返回一個新的 DateTime,該 DateTime 將指定的天數新增到此例項的值。

3

Public Function AddHours (value As Double) As DateTime

返回一個新的 DateTime,該 DateTime 將指定的小時數新增到此例項的值。

4

Public Function AddMinutes (value As Double) As DateTime

返回一個新的 DateTime,該 DateTime 將指定的分鐘數新增到此例項的值。

5

Public Function AddMonths (months As Integer) As DateTime

返回一個新的 DateTime,該 DateTime 將指定的月份數新增到此例項的值。

6

Public Function AddSeconds (value As Double) As DateTime

返回一個新的 DateTime,該 DateTime 將指定的秒數新增到此例項的值。

7

Public Function AddYears (value As Integer ) As DateTime

返回一個新的 DateTime,該 DateTime 將指定的年份數新增到此例項的值。

8

Public Shared Function Compare (t1 As DateTime,t2 As DateTime) As Integer

比較兩個 DateTime 例項,並返回一個整數,該整數指示第一個例項是否早於、等於或晚於第二個例項。

9

Public Function CompareTo (value As DateTime) As Integer

將此例項的值與指定的 DateTime 值進行比較,並返回一個整數,該整數指示此例項是否早於、等於或晚於指定的 DateTime 值。

10

Public Function Equals (value As DateTime) As Boolean

返回一個值,該值指示此例項的值是否等於指定的 DateTime 例項的值。

11

Public Shared Function Equals (t1 As DateTime, t2 As DateTime) As Boolean

返回一個值,該值指示兩個 DateTime 例項是否具有相同的日期和時間值。

12

Public Overrides Function ToString As String

將當前 DateTime 物件的值轉換為其等效的字串表示形式。

以上方法列表並不詳盡,請訪問 Microsoft 文件 以獲取 DateTime 結構的完整方法和屬性列表。

建立 DateTime 物件

您可以透過以下方式之一建立 DateTime 物件:

  • 從任何過載的 DateTime 建構函式呼叫 DateTime 建構函式。

  • 為 DateTime 物件分配屬性或方法返回的日期和時間值。

  • 分析日期和時間值的字串表示形式。

  • 呼叫 DateTime 結構的隱式預設建構函式。

以下示例演示了這一點:

Module Module1
   Sub Main()
      'DateTime constructor: parameters year, month, day, hour, min, sec
      Dim date1 As New Date(2012, 12, 16, 12, 0, 0)
      'initializes a new DateTime value
      Dim date2 As Date = #12/16/2012 12:00:52 AM#
      'using properties
      Dim date3 As Date = Date.Now
      Dim date4 As Date = Date.UtcNow
      Dim date5 As Date = Date.Today
      
      Console.WriteLine(date1)
      Console.WriteLine(date2)
      Console.WriteLine(date3)
      Console.WriteLine(date4)
      Console.WriteLine(date5)
      Console.ReadKey()
   End Sub
End Module

編譯並執行上述程式碼後,將產生以下結果:

12/16/2012 12:00:00 PM
12/16/2012 12:00:52 PM
12/12/2012 10:22:50 PM
12/12/2012 12:00:00 PM

獲取當前日期和時間

以下程式演示如何在 VB.Net 中獲取當前日期和時間:

當前時間:

Module dateNtime
   Sub Main()
      Console.Write("Current Time: ")
      Console.WriteLine(Now.ToLongTimeString)
      Console.ReadKey()
   End Sub
End Module

編譯並執行上述程式碼後,將產生以下結果:

Current Time: 11 :05 :32 AM

當前日期:

Module dateNtime
   Sub Main()
      Console.WriteLine("Current Date: ")
      Dim dt As Date = Today
      Console.WriteLine("Today is: {0}", dt)
      Console.ReadKey()
   End Sub
End Module

編譯並執行上述程式碼後,將產生以下結果:

Today is: 12/11/2012 12:00:00 AM

日期格式化

日期文字應括在井號 (# #) 中,並使用 M/d/yyyy 格式指定,例如 #12/16/2012#。否則,您的程式碼可能會根據執行應用程式的區域設定而改變。

例如,您為 2012 年 2 月 6 日指定了日期文字 #2/6/2012#。對於使用 mm/dd/yyyy 格式的區域設定來說,這是正確的。但是,在使用 dd/mm/yyyy 格式的區域設定中,您的文字將編譯為 2012 年 6 月 2 日。如果區域設定使用其他格式,例如 yyyy/mm/dd,則該文字將無效並導致編譯器錯誤。

要將日期文字轉換為您的區域設定的格式或自定義格式,請使用 String 類的 Format 函式,指定預定義或使用者定義的日期格式。

以下示例演示了這一點。

Module dateNtime
   Sub Main()
      Console.WriteLine("India Wins Freedom: ")
      Dim independenceDay As New Date(1947, 8, 15, 0, 0, 0)
      ' Use format specifiers to control the date display.
      Console.WriteLine(" Format 'd:' " & independenceDay.ToString("d"))
      Console.WriteLine(" Format 'D:' " & independenceDay.ToString("D"))
      Console.WriteLine(" Format 't:' " & independenceDay.ToString("t"))
      Console.WriteLine(" Format 'T:' " & independenceDay.ToString("T"))
      Console.WriteLine(" Format 'f:' " & independenceDay.ToString("f"))
      Console.WriteLine(" Format 'F:' " & independenceDay.ToString("F"))
      Console.WriteLine(" Format 'g:' " & independenceDay.ToString("g"))
      Console.WriteLine(" Format 'G:' " & independenceDay.ToString("G"))
      Console.WriteLine(" Format 'M:' " & independenceDay.ToString("M"))
      Console.WriteLine(" Format 'R:' " & independenceDay.ToString("R"))
      Console.WriteLine(" Format 'y:' " & independenceDay.ToString("y"))
      Console.ReadKey()
   End Sub
End Module

編譯並執行上述程式碼後,將產生以下結果:

India Wins Freedom:
Format 'd:' 8/15/1947
Format 'D:' Friday, August 15, 1947
Format 't:' 12:00 AM
Format 'T:' 12:00:00 AM
Format 'f:' Friday, August 15, 1947 12:00 AM
Format 'F:' Friday, August 15, 1947 12:00:00 AM
Format 'g:' 8/15/1947 12:00 AM
Format 'G:' 8/15/1947 12:00:00 AM
Format 'M:' 8/15/1947 August 15
Format 'R:' Fri, 15 August 1947 00:00:00 GMT
Format 'y:' August, 1947

預定義的日期/時間格式

下表標識了預定義的日期和時間格式名稱。這些名稱可用作 Format 函式的 style 引數:

格式 描述
常規日期或 G 顯示日期和/或時間。例如,1/12/2012 07:07:30 AM。
長日期、中日期或 D 根據您當前文化的長日期格式顯示日期。例如,星期日,2012 年 12 月 16 日。
短日期或 d 使用您當前文化的短日期格式顯示日期。例如,12/12/2012。
長時間、中時間或 T 使用您當前文化的長時間格式顯示時間;通常包括小時、分鐘、秒。例如,上午 01:07:30。
短時間或 t 使用您當前文化的短時間格式顯示時間。例如,上午 11:07。
f 根據您當前文化的格式顯示長日期和短時間。例如,星期日,2012 年 12 月 16 日 上午 12:15。
F 根據您當前文化的格式顯示長日期和長時間。例如,星期日,2012 年 12 月 16 日 上午 12:15:31。
g 根據您當前文化的格式顯示短日期和短時間。例如,12/16/2012 上午 12:15。
M, m 顯示日期的月份和日期。例如,12 月 16 日。
R, r 根據 RFC1123Pattern 屬性格式化日期。
s 將日期和時間格式化為可排序索引。例如,2012-12-16T12:07:31。
u 將日期和時間格式化為 GMT 可排序索引。例如,2012-12-16 12:15:31Z。
U 使用長日期和長時間作為 GMT 格式化日期和時間。例如,星期日,2012 年 12 月 16 日 下午 6:07:31。
Y, y 將日期格式化為年份和月份。例如,2012 年 12 月。

有關其他格式(如使用者定義的格式),請參閱 Microsoft 文件

DateAndTime 類的屬性和方法

下表列出了 DateAndTime 類中一些常用的 屬性

序號 屬性和描述
1

Date

返回或設定一個字串值,表示根據您的系統當前日期。

2

Now

返回一個 Date 值,包含根據您的系統當前日期和時間。

3

TimeOfDay

返回或設定一個 Date 值,包含根據您的系統當前時間。

4

計時器

返回一個 Double 值,表示自午夜以來經過的秒數。

5

時間字串

返回或設定一個字串值,表示根據您的系統當前時間。

6

Today

獲取當前日期。

下表列出了一些常用的DateAndTime類的方法

序號 方法名稱和描述
1

Public Shared Function DateAdd (Interval As DateInterval, Number As Double, DateValue As DateTime) As DateTime

返回一個 Date 值,其中包含已新增指定時間間隔的日期和時間值。

2

Public Shared Function DateAdd (Interval As String, Number As Double, DateValue As Object) As DateTime

返回一個 Date 值,其中包含已新增指定時間間隔的日期和時間值。

3

Public Shared Function DateDiff (Interval As DateInterval, Date1 As DateTime, Date2 As DateTime, DayOfWeek As FirstDayOfWeek, WeekOfYear As FirstWeekOfYear) As Long

返回一個 Long 值,指定兩個 Date 值之間的時間間隔數。

4

Public Shared Function DatePart (Interval As DateInterval, DateValue As DateTime, FirstDayOfWeekValue As FirstDayOfWeek, FirstWeekOfYearValue As FirstWeekOfYear) As Integer

返回一個 Integer 值,包含給定 Date 值的指定元件。

5

Public Shared Function Day (DateValue As DateTime) As Integer

返回一個 Integer 值(1 到 31),表示月份中的某一天。

6

Public Shared Function Hour (TimeValue As DateTime) As Integer

返回一個 Integer 值(0 到 23),表示一天中的小時。

7

Public Shared Function Minute (TimeValue As DateTime) As Integer

返回一個 Integer 值(0 到 59),表示小時中的分鐘。

8

Public Shared Function Month (DateValue As DateTime) As Integer

返回一個 Integer 值(1 到 12),表示一年中的月份。

9

Public Shared Function MonthName (Month As Integer, Abbreviate As Boolean) As String

返回一個包含指定月份名稱的字串值。

10

Public Shared Function Second (TimeValue As DateTime) As Integer

返回一個 Integer 值(0 到 59),表示分鐘中的秒數。

11

Public Overridable Function ToString As String

返回表示當前物件的字串。

12

Public Shared Function Weekday (DateValue As DateTime, DayOfWeek As FirstDayOfWeek) As Integer

返回一個 Integer 值,包含表示一週中某一天的數字。

13

Public Shared Function WeekdayName (Weekday As Integer, Abbreviate As Boolean, FirstDayOfWeekValue As FirstDayOfWeek) As String

返回一個包含指定工作日名稱的字串值。

14

Public Shared Function Year (DateValue As DateTime) As Integer

返回一個 Integer 值(1 到 9999),表示年份。

以上列表並非詳盡無遺。有關 DateAndTime 類的屬性和方法的完整列表,請參閱Microsoft 文件

下面的程式演示了其中一些屬性和方法:

Module Module1
   Sub Main()
      Dim birthday As Date
      Dim bday As Integer
      Dim month As Integer
      Dim monthname As String
      ' Assign a date using standard short format.
      birthday = #7/27/1998#
      bday = Microsoft.VisualBasic.DateAndTime.Day(birthday)
      month = Microsoft.VisualBasic.DateAndTime.Month(birthday)
      monthname = Microsoft.VisualBasic.DateAndTime.MonthName(month)
      
      Console.WriteLine(birthday)
      Console.WriteLine(bday)
      Console.WriteLine(month)
      Console.WriteLine(monthname)
      Console.ReadKey()
   End Sub
End Module

編譯並執行上述程式碼後,將產生以下結果:

7/27/1998 12:00:00 AM
27
7
July
廣告