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 Module1Sub Main()'DateTime constructor: parameters year, month, day, hour, min, secDim date1 As New Date(2022, 6, 1, 12, 0, 0)'initializes a new DateTime valueDim date2 As Date = #6/1/2022 12:00:52 AM#'using propertiesDim date3 As Date = Date.NowDim date4 As Date = Date.UtcNowDim date5 As Date = Date.TodayConsole.WriteLine(date1)Console.WriteLine(date2)Console.WriteLine(date3)Console.WriteLine(date4)Console.WriteLine(date5)Console.ReadKey()End SubEnd Module
获取当前日期与时间
下面的实例演示如何在 VB 中获取当前日期和时间:
Module dateNtimeSub Main()Console.Write("Current Time: ")Console.WriteLine(Now.ToLongTimeString)Console.ReadKey()End SubEnd Module
Module dateNtimeSub Main()Console.WriteLine("Current Date: ")Dim dt As Date = TodayConsole.WriteLine("Today is: {0}", dt)Console.ReadKey()End SubEnd 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 dateNtimeSub 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 SubEnd 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 Module1Sub Main()Dim birthday As DateDim bday As IntegerDim month As IntegerDim 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 SubEnd Module