你寫的大部分軟件都需要實(shí)現(xiàn)某種形式的日期功能,返回當(dāng)前日期和時(shí)間。日期是日常生活的一部分,使用它能讓工作變得輕松,不需要太多思考。 VB.Net還提供了強(qiáng)大的日期算術(shù)工具,使操作日期變得容易。
日期數(shù)據(jù)類型包含日期值,時(shí)間值或日期和時(shí)間值。 Date的默認(rèn)值為0001年1月1日的0:00:00(午夜)。等效的.NET數(shù)據(jù)類型為System.DateTime。
DateTime 結(jié)構(gòu)表示即時(shí)時(shí)間,通常表示為日期和時(shí)間的一天
'Declaration <SerializableAttribute> _ Public Structure DateTime _ Implements IComparable, IFormattable, IConvertible, ISerializable, IComparable(Of DateTime), IEquatable(Of DateTime)
您還可以從DateAndTime類獲取當(dāng)前日期和時(shí)間。
DateAndTime模塊包含日期和時(shí)間操作中使用的過(guò)程和屬性。
'Declaration <StandardModuleAttribute> _ Public NotInheritable Class DateAndTime
注意: DateTime結(jié)構(gòu)和DateAndTime模塊都包含諸如Now和Today之類的屬性,因此初學(xué)者經(jīng)常會(huì)感到困惑。 DateAndTime類屬于Microsoft.VisualBasic命名空間,DateTime結(jié)構(gòu)屬于System命名空間。 因此,使用后一種將使你移植你的代碼到另一個(gè).Net語(yǔ)言更加容易,如C#。 但是,DateAndTime類/模塊包含Visual Basic中所有可用的舊日期函數(shù)。 |
下表列出了一些DateTime結(jié)構(gòu)的常用屬性 :
S.N | 屬性 | 描述 |
---|---|---|
1 | Date | 獲取此實(shí)例的日期組件。 |
2 | Day | 獲取此實(shí)例所代表的月份中的某一天。 |
3 | DayOfWeek | 獲取此實(shí)例表示的星期幾。 |
4 | DayOfYear | 獲取此實(shí)例表示的一年中的某一天。 |
5 | Hour | 獲取此實(shí)例表示的日期的小時(shí)組件。 |
6 | Kind | 獲取一個(gè)值,該值指示此實(shí)例表示的時(shí)間是基于本地時(shí)間,協(xié)調(diào)世界時(shí)間(UTC)還是兩者都不是。 |
7 | Millisecond | 獲取此實(shí)例表示的日期的毫秒組件。 |
8 | Minute | 獲取此實(shí)例表示的日期的分鐘分量。 |
9 | Month | 獲取此實(shí)例表示的日期的月份。 |
10 | Now | 獲取在此計(jì)算機(jī)上設(shè)置為當(dāng)前日期和時(shí)間的DateTime對(duì)象,以本地時(shí)間表示。 |
11 | Second | 獲取此實(shí)例表示的日期的秒組件。 |
12 | Ticks | 獲取表示此實(shí)例的日期和時(shí)間的刻度數(shù)。 |
13 | TimeOfDay | 獲取此實(shí)例的時(shí)間。 |
14 | Today | 獲取當(dāng)前日期。 |
15 | UtcNow | 獲取設(shè)置為此計(jì)算機(jī)上當(dāng)前日期和時(shí)間的DateTime對(duì)象,以協(xié)調(diào)世界時(shí)(UTC)表示。 |
16 | Year | 獲取此實(shí)例表示的日期的年份組件。 |
下表列出了DateTime結(jié)構(gòu)的一些常用方法:
SN | 方法名稱和說(shuō)明 |
---|---|
1 | Public Function Add (value As TimeSpan) As DateTime 返回一個(gè)新的DateTime,將指定的TimeSpan的值添加到此實(shí)例的值。 |
2 | Public Function AddDays ( value As Double) As DateTime 返回一個(gè)新的DateTime,該值將指定的天數(shù)添加到此實(shí)例的值中。 |
3 | Public Function AddHours (value As Double) As DateTime 返回一個(gè)新的DateTime,該值將指定的小時(shí)數(shù)添加到此實(shí)例的值中。 |
4 | Public Function AddMinutes (value As Double) As DateTime 返回一個(gè)新的DateTime,將指定的分鐘數(shù)添加到此實(shí)例的值。 |
5 | Public Function AddMonths (months As Integer) As DateTime 返回一個(gè)新的DateTime,將指定的月數(shù)添加到此實(shí)例的值。 |
6 | Public Function AddSeconds (value As Double) As DateTime 返回一個(gè)新的DateTime,將指定的秒數(shù)添加到此實(shí)例的值。 |
7 | Public Function AddYears (value As Integer ) As DateTime 返回一個(gè)新的DateTime,將指定的年數(shù)添加到此實(shí)例的值。 |
8 | Public Shared Function Compare (t1 As DateTime,t2 As DateTime) As Integer 比較兩個(gè)DateTime實(shí)例,并返回一個(gè)整數(shù),指示第一個(gè)實(shí)例是早于,與第二個(gè)實(shí)例相同還是晚于第二個(gè)實(shí)例。 |
9 | Public Function CompareTo (value As DateTime) As Integer 將此實(shí)例的值與指定的DateTime值進(jìn)行比較,并返回一個(gè)整數(shù),指示此實(shí)例是早于,等于還是晚于指定的DateTime值。 |
10 | Public Function Equals (value As DateTime) As Boolean 返回一個(gè)值,表示此實(shí)例的值是否等于指定的DateTime實(shí)例的值。 |
11 | Public Shared Function Equals (t1 As DateTime, t2 As DateTime) As Boolean 返回一個(gè)值,指示兩個(gè)DateTime實(shí)例是否具有相同的日期和時(shí)間值。 |
12 | Public Overrides Function ToString As String 將當(dāng)前DateTime對(duì)象的值轉(zhuǎn)換為其等效字符串表示形式。 |
以上列出的方法并不詳盡,請(qǐng)?jiān)L問微軟的文檔以獲取DateTime結(jié)構(gòu)的方法和屬性的完整列表。
您可以通過(guò)以下方式之一創(chuàng)建DateTime對(duì)象:
通過(guò)從任何重載的DateTime構(gòu)造函數(shù)調(diào)用DateTime構(gòu)造函數(shù)。
通過(guò)為DateTime對(duì)象分配屬性或方法返回的日期和時(shí)間值。
通過(guò)解析日期和時(shí)間值的字符串表示。
通過(guò)調(diào)用DateTime結(jié)構(gòu)的隱式默認(rèn)構(gòu)造函數(shù)。
下面的例子說(shuō)明了這一點(diǎn):
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
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
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中的當(dāng)前日期和時(shí)間:
當(dāng)前時(shí)間:
Module dateNtime Sub Main() Console.Write("Current Time: ") Console.WriteLine(Now.ToLongTimeString) Console.ReadKey() End Sub End Module
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Current Time: 11 :05 :32 AM
當(dāng)前日期:
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
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Today is: 12/11/2012 12:00:00 AM
日期字面值應(yīng)該用哈希符號(hào)(##)括起來(lái),并以M / d / yyyy格式指定,例如#12/16/2012#。 否則,您的代碼可能會(huì)更改,具體取決于運(yùn)行應(yīng)用程序的語(yǔ)言環(huán)境。
例如,您為2012年2月6日的日期指定了#2/6/2012#的日期字面值。對(duì)于使用mm / dd / yyyy格式的語(yǔ)言環(huán)境,這是正確的。 但是,在使用dd / mm / yyyy格式的語(yǔ)言環(huán)境中,您的文本將編譯為2012年6月2日。如果語(yǔ)言環(huán)境使用另一種格式,例如yyyy / mm / dd,該文字將無(wú)效并導(dǎo)致編譯器錯(cuò)誤。
要將Date字面值轉(zhuǎn)換為語(yǔ)言環(huán)境的格式或自定義格式,請(qǐng)使用String類的Format函數(shù),指定預(yù)定義或用戶定義的日期格式。
下面的例子演示了這一點(diǎn)。
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
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
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
下表列出了預(yù)定義的日期和時(shí)間格式名稱。 可以通過(guò)這些名稱用作Format函數(shù)的樣式參數(shù):
格式 | 描述 |
---|---|
General Date, or G | 顯示日期和/或時(shí)間。 例如,1/12/2012 07:07:30 AM。. |
Long Date,Medium Date, or D | 根據(jù)您當(dāng)前區(qū)域的長(zhǎng)日期格式顯示日期。 例如,2012年12月16日星期日 |
Short Date, or d | 使用當(dāng)前區(qū)域短日期格式顯示日期。 例如,12/12/2012。. |
Long Time,Medium Time, orT | 使用您當(dāng)前區(qū)域的長(zhǎng)時(shí)間格式顯示時(shí)間; 通常包括小時(shí),分鐘,秒。 例如,01:07:30 AM。. |
Short Time or t | 使用當(dāng)前區(qū)域的短時(shí)格式顯示時(shí)間。 例如,11:07 AM。. |
f | 根據(jù)您當(dāng)前的區(qū)域格式顯示長(zhǎng)日期和短時(shí)間。 例如,2012年12月16日星期日上午12:15。. |
F | 根據(jù)您當(dāng)前的區(qū)域格式顯示長(zhǎng)日期和長(zhǎng)時(shí)間。 例如,2012年12月16日星期日12:15:31 AM。. |
g | 根據(jù)您當(dāng)前的區(qū)域格式顯示短日期和短時(shí)間。 例如,12/16/2012 12:15 AM。. |
M, m | 顯示日期的月份和日期。 例如,12月16日。. |
R, r | 根據(jù)RFC1123Pattern屬性格式化日期。. |
s | 將日期和時(shí)間格式化為可排序索引。 例如,2012-12-16T12:07:31。. |
u | 將日期和時(shí)間格式設(shè)置為GMT可排序索引。 例如,2012-12-16 12:15:31Z。. |
U | 將日期和時(shí)間格式設(shè)置為長(zhǎng)日期和長(zhǎng)時(shí)間,格式為GMT。 例如,星期日,2012年12月16日下午6:07:31。. |
Y, y | 將日期格式設(shè)置為年和月。 例如,2012年12月。. |
對(duì)于其他格式,如用戶定義的格式,請(qǐng)參閱Microsoft文檔 。
下表列出了一些DateAndTime類的常用屬性 :
SN | 屬性 | 描述 |
---|---|---|
1 | Date | 返回或設(shè)置根據(jù)系統(tǒng)代表當(dāng)前日期的字符串值。 |
2 | Now | 返回一個(gè)包含根據(jù)系統(tǒng)的當(dāng)前日期和時(shí)間的日期值。 |
3 | TimeOfDay | 返回或設(shè)置根據(jù)你的系統(tǒng)包含當(dāng)天的當(dāng)前時(shí)間的日期值。 |
4 | Timer | 返回表示自午夜起經(jīng)過(guò)的秒數(shù)為Double值。 |
5 | TimeString | 返回或設(shè)置根據(jù)你的系統(tǒng)代表一天的當(dāng)前時(shí)間的字符串值。 |
6 | Today | 獲取當(dāng)前日期。 |
下表列出了一些DateAndTime類的常用方法 :
SN | 方法名稱和說(shuō)明 |
---|---|
1 | Public Shared Function DateAdd (Interval As DateInterval, Number As Double, DateValue As DateTime) As DateTime 返回包含已添加指定時(shí)間間隔的日期和時(shí)間值的Date值。 |
2 | Public Shared Function DateAdd (Interval As String,Number As Double,DateValue As Object ) As DateTime 返回包含已添加指定時(shí)間間隔的日期和時(shí)間值的Date值。 |
3 | Public Shared Function DateDiff (Interval As DateInterval, Date1 As DateTime, Date2 As DateTime, DayOfWeek As FirstDayOfWeek, WeekOfYear As FirstWeekOfYear ) As Long 返回指定兩個(gè)日期值之間的時(shí)間間隔數(shù)的長(zhǎng)整型值。 |
4 | Public Shared Function DatePart (Interval As DateInterval, DateValue As DateTime, FirstDayOfWeekValue As FirstDayOfWeek, FirstWeekOfYearValue As FirstWeekOfYear ) As Integer 返回包含給定Date值的指定組件的整數(shù)值。 |
5 | Public Shared Function Day (DateValue As DateTime) As Integer 返回從1到31的整數(shù)值,表示每月的某一天。 |
6 | Public Shared Function Hour (TimeValue As DateTime) As Integer 公共共享函數(shù)Hour (TIMEVALUE為DATETIME)作為整數(shù) 返回從0到23的整數(shù)值,表示一天中的小時(shí)。 |
7 | Public Shared Function Minute (TimeValue As DateTime) As Integer 返回一個(gè)從0到59的整數(shù)值,表示小時(shí)的分鐘。 |
8 | Public Shared Function Month (DateValue As DateTime) As Integer 返回從1到12的整數(shù)值,表示一年中的月份。 |
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,代表分鐘的第二個(gè)整數(shù)值。 |
11 | Public Overridable Function ToString As String 返回表示當(dāng)前對(duì)象的字符串。 |
12 | Public Shared Function Weekday (DateValue As DateTime, DayOfWeek As FirstDayOfWeek) As Integer 返回包含表示星期幾的一個(gè)數(shù)的整數(shù)值。 |
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表示年份的整數(shù)值。 |
上述名單并不詳盡。有關(guān)屬性和DateAndTime類的方法的完整列表,請(qǐng)參閱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
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
7/27/1998 12:00:00 AM 27 7 July
更多建議: