Visual Basic 日期时间
编程必不可少会需要用到返回当前日期和时间的函数。日期是日常生活的重要组成部分。因此 VB 提供了强大的日期时间计算工具,使操作日期时间变得简单。
日期(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 属性和方法
下面列出了 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
对象一个属性或方法返回的日期和时间值。 - 通过解析日期和时间值的字符串表示。
- 通过调用
DateTime
的隐式默认构造函数。
下面是一个实例
Module Module1
Sub Main()
'DateTime constructor: parameters year, month, day, hour, min, sec
Dim date1 As New Date(2022, 6, 1, 12, 0, 0)
'initializes a new DateTime value
Dim date2 As Date = #6/1/2022 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
获取当前日期与时间
下面的实例演示如何在 VB 中获取当前日期和时间:
Module dateNtime
Sub Main()
Console.Write("Current Time: ")
Console.WriteLine(Now.ToLongTimeString)
Console.ReadKey()
End Sub
End Module
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
日期格式化
日期字面量应该包含在散列符号(##)中,并以 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
预定义的日期/时间格式
下面列表列出了预定义的日期和时间格式名称。这些可能被用作 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 类的属性和方法
下面列出了 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 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