VB.Net - 日期和時(shí)間

2022-05-24 16:15 更新

你寫的大部分軟件都需要實(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í)間操作中使用的過程和屬性。

'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)的屬性和方法

下表列出了一些DateTime結(jié)構(gòu)的常用屬性

S.N屬性描述
1Date獲取此實(shí)例的日期組件。
2Day獲取此實(shí)例所代表的月份中的某一天。
3DayOfWeek獲取此實(shí)例表示的星期幾。
4DayOfYear獲取此實(shí)例表示的一年中的某一天。
5Hour獲取此實(shí)例表示的日期的小時(shí)組件。
6Kind獲取一個(gè)值,該值指示此實(shí)例表示的時(shí)間是基于本地時(shí)間,協(xié)調(diào)世界時(shí)間(UTC)還是兩者都不是。
7Millisecond獲取此實(shí)例表示的日期的毫秒組件。
8Minute獲取此實(shí)例表示的日期的分鐘分量。
9Month獲取此實(shí)例表示的日期的月份。
10Now獲取在此計(jì)算機(jī)上設(shè)置為當(dāng)前日期和時(shí)間的DateTime對(duì)象,以本地時(shí)間表示。
11Second獲取此實(shí)例表示的日期的秒組件。
12Ticks獲取表示此實(shí)例的日期和時(shí)間的刻度數(shù)。
13TimeOfDay獲取此實(shí)例的時(shí)間。
14Today獲取當(dāng)前日期。
15UtcNow獲取設(shè)置為此計(jì)算機(jī)上當(dāng)前日期和時(shí)間的DateTime對(duì)象,以協(xié)調(diào)世界時(shí)(UTC)表示。
16Year獲取此實(shí)例表示的日期的年份組件。

下表列出了DateTime結(jié)構(gòu)的一些常用方法:

SN方法名稱和說(shuō)明
1

Public Function Add (value As TimeSpan) As DateTime
公共函數(shù)Add(值作為時(shí)間跨度)As DateTime

返回一個(gè)新的DateTime,將指定的TimeSpan的值添加到此實(shí)例的值。

2

Public Function AddDays ( value As Double) As DateTime
公共函數(shù)AddDays(值為雙)As DateTime

返回一個(gè)新的DateTime,該值將指定的天數(shù)添加到此實(shí)例的值中。

3

Public Function AddHours (value As Double) As DateTime
公共函數(shù)AddHours(值為雙)As DateTime

返回一個(gè)新的DateTime,該值將指定的小時(shí)數(shù)添加到此實(shí)例的值中。

4

Public Function AddMinutes (value As Double) As DateTime
公共函數(shù)AddMinutes(值為雙)As DateTime

返回一個(gè)新的DateTime,將指定的分鐘數(shù)添加到此實(shí)例的值。

5

Public Function AddMonths (months As Integer) As DateTime
公共函數(shù)AddMonths(月作為整數(shù))As DateTime

返回一個(gè)新的DateTime,將指定的月數(shù)添加到此實(shí)例的值。

6

Public Function AddSeconds (value As Double) As DateTime
公共函數(shù)AddSeconds(值為雙)As DateTime

返回一個(gè)新的DateTime,將指定的秒數(shù)添加到此實(shí)例的值。

7

Public Function AddYears (value As Integer ) As DateTime
公共函數(shù)AddYears(值為整數(shù)) As DateTime

返回一個(gè)新的DateTime,將指定的年數(shù)添加到此實(shí)例的值。

8

Public Shared Function Compare (t1 As DateTime,t2 As DateTime) As Integer
公共共享函數(shù)比較(T1作為日期時(shí)間,T2為DATETIME)As Integer

比較兩個(gè)DateTime實(shí)例,并返回一個(gè)整數(shù),指示第一個(gè)實(shí)例是早于,與第二個(gè)實(shí)例相同還是晚于第二個(gè)實(shí)例。

9

Public Function CompareTo (value As DateTime) As Integer
公共函數(shù)CompareTo(值為DATETIME)As Integer

將此實(shí)例的值與指定的DateTime值進(jìn)行比較,并返回一個(gè)整數(shù),指示此實(shí)例是早于,等于還是晚于指定的DateTime值。

10

Public Function Equals (value As DateTime) As Boolean
公共函數(shù)等于(值為DATETIME)As Boolean

返回一個(gè)值,表示此實(shí)例的值是否等于指定的DateTime實(shí)例的值。

11

Public Shared Function Equals (t1 As DateTime, t2 As DateTime) As Boolean
公共共享函數(shù)等于(T1作為日期時(shí)間,T2為DATETIME) As Boolean

返回一個(gè)值,指示兩個(gè)DateTime實(shí)例是否具有相同的日期和時(shí)間值。

12

Public Overrides Function ToString As String
公共覆蓋函數(shù)ToString  As String

將當(dāng)前DateTime對(duì)象的值轉(zhuǎn)換為其等效字符串表示形式。

以上列出的方法并不詳盡,請(qǐng)?jiān)L問微軟的文檔以獲取DateTime結(jié)構(gòu)的方法和屬性的完整列表。

創(chuàng)建DateTime對(duì)象

您可以通過以下方式之一創(chuàng)建DateTime對(duì)象:

  • 通過從任何重載的DateTime構(gòu)造函數(shù)調(diào)用DateTime構(gòu)造函數(shù)。

  • 通過為DateTime對(duì)象分配屬性或方法返回的日期和時(shí)間值。

  • 通過解析日期和時(shí)間值的字符串表示。

  • 通過調(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

獲取當(dāng)前日期和時(shí)間:

以下程序演示如何獲取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í)間格式

下表列出了預(yù)定義的日期和時(shí)間格式名稱。 可以通過這些名稱用作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類的方法

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

SN屬性描述
1Date
返回或設(shè)置根據(jù)系統(tǒng)代表當(dāng)前日期的字符串值。
2Now
返回一個(gè)包含根據(jù)系統(tǒng)的當(dāng)前日期和時(shí)間的日期值。
3TimeOfDay返回或設(shè)置根據(jù)你的系統(tǒng)包含當(dāng)天的當(dāng)前時(shí)間的日期值。
4Timer
返回表示自午夜起經(jīng)過的秒數(shù)為Double值。
5TimeString返回或設(shè)置根據(jù)你的系統(tǒng)代表一天的當(dāng)前時(shí)間的字符串值。
6Today
獲取當(dāng)前日期。

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

SN方法名稱和說(shuō)明
1

Public Shared Function DateAdd (Interval As DateInterval, Number As Double, DateValue As DateTime) As DateTime
公共共享函數(shù)使用DateAdd(時(shí)間間隔為DateInterval,號(hào)碼為DOUBLE,則DateValue為DATETIME)為DATETIME

返回包含已添加指定時(shí)間間隔的日期和時(shí)間值的Date值。

2

Public Shared Function DateAdd (Interval As String,Number As Double,DateValue As Object ) As DateTime
公共共享函數(shù)使用DateAdd(時(shí)間間隔為字符串,數(shù)字為DOUBLE,則DateValue作為對(duì)象)為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
公共共享函數(shù)DateDiff(時(shí)間間隔為DateInterval,日期1為DATETIME,日期2為DATETIME,星期作為Firstdayofweek,WEEKOFYEAR作為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
公共共享函數(shù)DATEPART(時(shí)間間隔為DateInterval,則DateValue為DATETIME,F(xiàn)irstDayOfWeekValue作為Firstdayofweek可,F(xiàn)irstWeekOfYearValue作為FirstWeekOfYear)作為整數(shù)

返回包含給定Date值的指定組件的整數(shù)值。

5

Public Shared Function Day (DateValue As DateTime) As Integer
公共共享函數(shù)Day(DateValue將作為DATETIME)作為整數(shù)

返回從1到31的整數(shù)值,表示每月的某一天。

6Public 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
公共共享函數(shù)Minute(TIMEVALUE為DATETIME)作為整數(shù)

返回一個(gè)從0到59的整數(shù)值,表示小時(shí)的分鐘。

8

Public Shared Function Month (DateValue As DateTime) As Integer
公共共享函數(shù)Month(DateValue將作為DATETIME)作為整數(shù)

返回從1到12的整數(shù)值,表示一年中的月份。

9

Public Shared Function MonthName (Month As Integer, Abbreviate As Boolean) As String
公共共享函數(shù)MONTHNAME(月為整數(shù),簡(jiǎn)稱布爾)作為字符串

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

10

Public Shared Function Second (TimeValue As DateTime) As Integer
公共共享函數(shù)Second(TIMEVALUE為DATETIME)作為整數(shù)

返回從0到59,代表分鐘的第二個(gè)整數(shù)值。

11

Public Overridable Function ToString As String
公眾可重寫的ToString函數(shù)作為字符串

返回表示當(dāng)前對(duì)象的字符串。

12

Public Shared Function Weekday (DateValue As DateTime, DayOfWeek As FirstDayOfWeek) As Integer
公共共享函數(shù)Weekday (DateValue將作為日期時(shí)間,星期由于Firstdayofweek可)作為整數(shù)

返回包含表示星期幾的一個(gè)數(shù)的整數(shù)值。

13

Public Shared Function WeekdayName (Weekday As Integer, Abbreviate As Boolean, FirstDayOfWeekValue As FirstDayOfWeek) As String
公共共享函數(shù)WEEKDAYNAME(平日為整數(shù),簡(jiǎn)稱布爾,F(xiàn)irstDayOfWeekValue作為Firstdayofweek可)作為字符串

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

14

Public Shared Function Year (DateValue As DateTime) As Integer
公共共享函數(shù)(一年則DateValue為DATETIME)作為整數(shù)

返回從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


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)