日期和时间( Date & Time)
您编写的大多数软件都需要实现某种形式的日期函数来返回当前日期和时间。 日期是日常生活的重要组成部分,无需思考即可轻松与他们合作。 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
Note: DateTime结构和DateAndTime模块都包含Now和Today等属性,因此初学者经常会发现它令人困惑。 DateAndTime类属于Microsoft.VisualBasic命名空间,DateTime结构属于System命名空间。 因此,使用后者可以帮助您将代码移植到另一种.Net语言,如C#。 但是,DateAndTime类/模块包含Visual Basic中可用的所有旧日期函数。 |
DateTime结构的属性和方法
下表列出了DateTime结构的一些常用properties -
Sr.No | 属性 | 描述 |
---|---|---|
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结构的一些常用methods -
Sr.No | 方法名称和描述 |
---|---|
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对象分配属性或方法返回的日期和时间值。
通过解析日期和时间值的字符串表示。
通过调用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
Current Date −
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,则文字将无效并导致编译器错误。
要将Date文本转换为语言环境的格式或自定义格式,请使用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函数的样式参数 -
格式 | 描述 |
---|---|
General Date, or G | 显示日期和/或时间。 例如,2012年1月12日上午07:07:30。 |
Long Date,Medium Date, or D | 根据您当前文化的长日期格式显示日期。 例如,2012年12月16日星期日。 |
Short Date, or d | 使用当前文化的短日期格式显示日期。 例如,12/12/2012。 |
Long Time,Medium Time, orT | 使用您当前文化的长时间格式显示时间; 通常包括小时,分钟,秒。 例如,01:07:30 AM。 |
Short Time or t | 使用当前文化的短时间格式显示时间。 例如,上午11:07。 |
f | 根据您当前的文化格式显示长日期和短时间。 例如,2012年12月16日星期日上午12:15。 |
F | 根据您当前的文化格式显示长日期和长时间。 例如,2012年12月16日星期日上午12:15:31。 |
g | 根据您当前的文化格式显示短日期和短时间。 例如,12/16/2012 12:15 AM。 |
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类的一些常用properties -
Sr.No | 财产和描述 |
---|---|
1 | Date 根据您的系统返回或设置表示当前日期的String值。 |
2 | Now 根据您的系统返回包含当前日期和时间的Date值。 |
3 | TimeOfDay 根据您的系统返回或设置包含当前时间的Date值。 |
4 | Timer 返回一个Double值,表示自午夜起经过的秒数。 |
5 | TimeString 根据您的系统返回或设置表示当前时间的String值。 |
6 | Today 获取当前日期。 |
下表列出了DateAndTime类的一些常用methods -
Sr.No | 方法名称和描述 |
---|---|
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 返回包含给定Date值的指定组件的Integer值。 |
5 | Public Shared Function Day (DateValue As DateTime) As Integer 返回1到31之间的Integer值,表示该月的某天。 |
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 返回包含指定月份名称的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 返回一个Integer值,其中包含表示星期几的数字。 |
13 | Public Shared Function WeekdayName (Weekday As Integer, Abbreviate As Boolean, FirstDayOfWeekValue As FirstDayOfWeek) As String 返回包含指定工作日名称的String值。 |
14 | Public Shared Function Year (DateValue As DateTime) As Integer 返回表示年份的1到9999之间的Integer值。 |
以上列表并非详尽无遗。 有关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