大部分編寫的軟體都需要實現某種形式,返回當前日期和時間的日期函式。日期是日常生活的重要組成部分。 VB.Net還提供了強大的日期算術工具,使操作日期變得簡單。
日期(Date
)資料型別包含日期值,時間值或日期和時間值。Date
的預設值是0001年1月1日0:00:00
(午夜)。等效的.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
模組都包含"Now"
和"Today"
等屬性,所以初學者經常會覺得很困惑。DateAndTime
類屬於Microsoft.VisualBasic
名稱空間,DateTime
結構屬於System
名稱空間。因此,使用後者將幫助您將程式碼移植到另一種.Net語言(如 C# )。 但是,DateAndTime
類/模組包含Visual Basic中提供的所有舊版日期函式。
下表列出了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 |
獲取此範例表示的日期的年份元件。 |
16 | Year |
下表列出了DateTime 結構的一些常用方法: |
下表列出了DateTime
結構的一些常用方法:
編號 | 方法 | 描述 |
---|---|---|
1 | Public Function Add (value As TimeSpan) As DateTime |
返回一個新的DateTime ,將指定的TimeSpan 的值新增到此範例的值中。 |
2 | Public Function AddDays ( value As Double) As DateTime |
返回一個新的DateTime ,將指定的天數新增到此範例的值中。 |
3 | Public Function AddHours (value As Double) As DateTime |
返回一個新的DateTime ,它將指定的小時數新增到此範例的值中。 |
4 | Public Function AddMinutes (value As Double) As DateTime |
返回一個新的DateTime ,將指定的分鐘數新增到此範例的值中。 |
5 | Public Function AddMonths (months As Integer) As DateTime |
返回一個新的DateTime ,將指定的月數新增到此範例的值。 |
6 | Public Function AddSeconds (value As Double) As DateTime |
返回一個新的DateTime ,將指定的秒數新增到此範例的值中。 |
7 | Public Function AddYears (value As Integer ) As 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
結構的隱式預設建構函式。以下範例演示了這一點:
Module Module1
Sub Main()
'DateTime constructor: parameters year, month, day, hour, min, sec'
Dim date1 As New Date(2018, 12, 16, 12, 0, 0)
'initializes a new DateTime value'
Dim date2 As Date = #12/16/2018 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
當上面的程式碼被編譯並執行時,會產生以下結果:
F:\worksp\vb.net\datetime>vbc createdatatime.vb
F:\worksp\vb.net\datetime>createdatatime.exe
2018/12/16 12:00:00
2018/12/16 0:00:52
2017/11/8 3:16:59
2017/11/8 7:16:59
2017/11/8 0:00:00
當前時間:
以下程式演示如何在VB.Net中獲取當前日期和時間:
Module dateNtime
Sub Main()
Console.Write("Current Time: ")
Console.WriteLine(Now.ToLongTimeString)
Console.ReadKey()
End Sub
End Module
執行上面範例程式碼,得到以下結果 -
F:\worksp\vb.net\datetime>vbc dateNtime.vb
F:\worksp\vb.net\datetime>dateNtime.exe
Current Time: 3:19:02
以下程式演示如何在VB.Net中獲取當前日期:
當前日期
Module dateNtime2
Sub Main()
Console.WriteLine("Current Date: ")
Dim dt As Date = Today
Console.WriteLine("Today is: {0}", dt)
Console.ReadKey()
End Sub
End Module
執行上面範例程式碼,得到以下結果 -
F:\worksp\vb.net\datetime>vbc dateNtime2.vb
F:\worksp\vb.net\datetime>dateNtime2.exe
Current Date:
Today is: 2017/11/8 0:00:00
日期文字應該包含在雜湊符號(##
)中,並以M/d/yyyy
格式指定,例如#12/16/2018#
。 否則,程式碼可能會根據應用程式正在執行的區域設定而改變。
例如,指定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
執行上面範例程式碼,得到以下結果 -
F:\worksp\vb.net\datetime>vbc dateFormat.vb
Microsoft (R) Visual Basic Compiler version 14.0.1038
for Visual Basic 2012
Copyright (c) Microsoft Corporation. All rights reserved.
This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to Visual Basic 2012, which is no longer the latest version. For compilers that support newer versions of the Visual Basic programming language, see http://go.microsoft.com/fwlink/?LinkID=533241
F:\worksp\vb.net\datetime>dateFormat.exe
India Wins Freedom:
Format 'd:' 1947/8/15
Format 'D:' 1947年8月15日
Format 't:' 0:00
Format 'T:' 0:00:00
Format 'f:' 1947年8月15日 0:00
Format 'F:' 1947年8月15日 0:00:00
Format 'g:' 1947/8/15 0:00
Format 'G:' 1947/8/15 0:00:00
Format 'M:' 8月15日
Format 'R:' Fri, 15 Aug 1947 00:00:00 GMT
Format 'y:' 1947年8月
下表列出了預定義的日期和時間格式名稱。這些可能被用作Format
函式的樣式引數:
編號 | 格式 | 描述 |
---|---|---|
1 | General Date 或 G |
顯示日期和/或時間。 例如,2018年1月12日上午07時07分30秒。 |
2 | Long Date ,Medium Date 或 D |
根據當前所在地區的長日期格式顯示日期。 例如,2018年12月16日星期日。 |
3 | Short Date 或 d |
使用當前所在地區的短日期格式顯示日期。 例如,2018年12月12日。 |
4 | Long Time ,Medium Time 或者 T |
使用當前所在地區的長時間格式顯示時間; 通常包括小時,分鐘,秒。 例如,01:07:30 AM。 |
5 | Short Time 或 t |
使用當前所在地區的短時間格式顯示時間。 例如,上午11:07。 |
6 | f |
根據當前所在地區格式顯示長日期和短時間。例如,2018年12月16日星期日上午12:15。 |
7 | F |
根據當前所在地區格式顯示長日期和長時間。 例如,2018年12月16日星期日上午12時15分31秒。 |
8 | g |
根據當前的文化格式顯示短日期和短時間。例如,2018年12月16日上午12:15。 |
9 | M , m |
顯示日期的月份和日期。 例如,12月16日。 |
10 | R , r |
根據RFC1123Pattern屬性格式化日期。 |
11 | s |
將日期和時間格式化為可排序的索引。例如:2018-12-16T12:07:31 。 |
12 | u |
將日期和時間格式化為GMT可排序索引。 例如,2018-12-16 12:15:31Z 。 |
13 | U |
將日期和時間格式化為GMT格式。 例如,2018年12月16日星期日下午6:07:31 PM。 |
14 | Y , y |
將日期格式化為年份和月份。例如,2018年12月。 |
對於其他格式,如使用者定義的格式,請參閱Microsoft文件。
下表列出了DateAndTime
類的一些常用屬性:
編號 | 屬性 | 描述 |
---|---|---|
1 | Date |
根據系統或設定返回表示當前日期的字串值。 |
2 | Now |
根據系統返回包含當前日期和時間的日期值。 |
3 | TimeOfDay |
根據系統返回或設定包含當前時間的日期值。 |
4 | Timer |
返回Double 值,表示從午夜開始經過的秒數。 |
5 | TimeString |
根據系統或設定返回表示當前時間的字串值。 |
6 | Today |
獲取當前日期。 |
下表列出了DateAndTime
類的一些常用方法:
編號 | 方法 | 描述 |
---|---|---|
1 | Public Shared Function DateAdd (Interval As DateInterval, Number As Double, DateValue As DateTime) As DateTime |
返回包含新增了指定時間間隔的日期和時間值的日期值。 |
2 | Public Shared Function DateAdd (Interval As String,Number As Double,DateValue As Object ) As DateTime |
返回包含新增了指定時間間隔的日期和時間值的日期值。 |
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 |
返回包含給定Date 值的指定元件的整數值。 |
5 | Public Shared Function Day (DateValue As DateTime) As Integer |
返回1 到31 之間的整數值,表示月份的一天。 |
6 | Public Shared Function Hour (TimeValue As DateTime) As Integer |
返回從0 到23 的整數值,表示一天中的小時。 |
7 | Public Shared Function Minute (TimeValue As DateTime) As Integer |
返回從0 到59 的整數值,代表小時的分鐘數。 |
8 | Public Shared Function Month (DateValue As DateTime) As 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 |
返回從0 到59 的整數值,表示分鐘的秒數。 |
11 | Public Overridable Function ToString As String |
返回表示當前物件的字串。 |
12 | Public Shared Function Weekday (DateValue As DateTime, DayOfWeek As FirstDayOfWeek) As 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 |
返回表示年份的從1 到9999 的整數值。 |
以上列表並不詳盡。有關DateAndTime
類的屬性和方法的完整列表,請參閱Microsoft文件。
以下程式演示了一些這些和方法的使用:
Module Dateandtime
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/1994#
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
執行上面範例程式碼,得到以下結果 -
F:\worksp\vb.net\datetime>vbc Dateandtime.vb
F:\worksp\vb.net\datetime>Dateandtime.exe
1994/7/27 0:00:00
27
7
七月