VB.Net - 日期和時間

2022-05-24 16:15 更新

你寫的大部分軟件都需要實現(xiàn)某種形式的日期功能,返回當前日期和時間。日期是日常生活的一部分,使用它能讓工作變得輕松,不需要太多思考。 VB.Net還提供了強大的日期算術工具,使操作日期變得容易。

日期數(shù)據(jù)類型包含日期值,時間值或日期和時間值。 Date的默認值為0001年1月1日的0:00:00(午夜)。等效的.NET數(shù)據(jù)類型為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之類的屬性,因此初學者經(jīng)常會感到困惑。 DateAndTime類屬于Microsoft.VisualBasic命名空間,DateTime結構屬于System命名空間。

因此,使用后一種將使你移植你的代碼到另一個.Net語言更加容易,如C#。 但是,DateAndTime類/模塊包含Visual Basic中所有可用的舊日期函數(shù)。

DateTime結構的屬性和方法

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

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

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

SN方法名稱和說明
1

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

返回一個新的DateTime,將指定的TimeSpan的值添加到此實例的值。

2

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

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

3

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

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

4

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

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

5

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

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

6

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

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

7

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

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

8

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

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

9

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

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

10

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

返回一個值,表示此實例的值是否等于指定的DateTime實例的值。

11

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

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

12

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

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

以上列出的方法并不詳盡,請訪問微軟的文檔以獲取DateTime結構的方法和屬性的完整列表。

創(chuàng)建DateTime對象

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

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

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

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

  • 通過調(diào)用DateTime結構的隱式默認構造函數(shù)。

下面的例子說明了這一點:

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

當上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結果:

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

當上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結果:

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

當上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結果:

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

格式化日期

日期字面值應該用哈希符號(##)括起來,并以M / d / yyyy格式指定,例如#12/16/2012#。 否則,您的代碼可能會更改,具體取決于運行應用程序的語言環(huán)境。

例如,您為2012年2月6日的日期指定了#2/6/2012#的日期字面值。對于使用mm / dd / yyyy格式的語言環(huán)境,這是正確的。 但是,在使用dd / mm / yyyy格式的語言環(huán)境中,您的文本將編譯為2012年6月2日。如果語言環(huán)境使用另一種格式,例如yyyy / mm / dd,該文字將無效并導致編譯器錯誤。

要將Date字面值轉(zhuǎn)換為語言環(huán)境的格式或自定義格式,請使用String類的Format函數(shù),指定預定義或用戶定義的日期格式。

下面的例子演示了這一點。

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

當上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結果:

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函數(shù)的樣式參數(shù):

格式描述
General Date, or G

顯示日期和/或時間。 例如,1/12/2012 07:07:30 AM。.

Long Date,Medium Date, or D

根據(jù)您當前區(qū)域的長日期格式顯示日期。 例如,2012年12月16日星期日

Short Date, or d

使用當前區(qū)域短日期格式顯示日期。 例如,12/12/2012。.

Long Time,Medium Time, orT

使用您當前區(qū)域的長時間格式顯示時間; 通常包括小時,分鐘,秒。 例如,01:07:30 AM。.

Short Time or t

使用當前區(qū)域的短時格式顯示時間。 例如,11:07 AM。.

f

根據(jù)您當前的區(qū)域格式顯示長日期和短時間。 例如,2012年12月16日星期日上午12:15。.

F

根據(jù)您當前的區(qū)域格式顯示長日期和長時間。 例如,2012年12月16日星期日12:15:31 AM。.

g

根據(jù)您當前的區(qū)域格式顯示短日期和短時間。 例如,12/16/2012 12:15 AM。.

M, m

顯示日期的月份和日期。 例如,12月16日。.

R, r

根據(jù)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類的常用屬性

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

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

SN方法名稱和說明
1

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

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

2

Public Shared Function DateAdd (Interval As String,Number As Double,DateValue As Object ) As DateTime
公共共享函數(shù)使用DateAdd(時間間隔為字符串,數(shù)字為DOUBLE,則DateValue作為對象)為DATETIME

返回包含已添加指定時間間隔的日期和時間值的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(時間間隔為DateInterval,日期1為DATETIME,日期2為DATETIME,星期作為Firstdayofweek,WEEKOFYEAR作為FirstWeekOfYear)As Long

返回指定兩個日期值之間的時間間隔數(shù)的長整型值。

4

Public Shared Function DatePart (Interval As DateInterval, DateValue As DateTime, FirstDayOfWeekValue As FirstDayOfWeek, FirstWeekOfYearValue As FirstWeekOfYear ) As Integer
公共共享函數(shù)DATEPART(時間間隔為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ù)值,表示一天中的小時。

7

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

返回一個從0到59的整數(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ù),簡稱布爾)作為字符串

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

10

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

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

11

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

返回表示當前對象的字符串。

12

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

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

13

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

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

14

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

返回從1到9999表示年份的整數(shù)值。

上述名單并不詳盡。有關屬性和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

當上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結果:

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


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號