Visual Basic 日期时间

编程必不可少会需要用到返回当前日期和时间的函数。日期是日常生活的重要组成部分。因此 VB 提供了强大的日期时间计算工具,使操作日期时间变得简单。

日期(Date) 数据类型包含日期值,时间值或日期和时间值。Date 的默认值是 0001 年 1 月 1 日 0:00:00。等效的 .NET 数据类型是 System.DateTime

DateTime 结构表示即时时间,通常表示为日期和时间。

  1. 'Declaration
  2. <SerializableAttribute> _
  3. Public Structure DateTime _
  4. Implements IComparable, IFormattable, IConvertible, ISerializable,
  5. IComparable(Of DateTime), IEquatable(Of DateTime)

还可以从 DateAndTime 类获取当前的日期和时间。DateAndTime 模块包含日期和时间操作中使用的过程和属性。

  1. 'Declaration
  2. <StandardModuleAttribute> _
  3. Public NotInheritable Class DateAndTime
注意DateTimeDateAndTime 模块都包含 "Now" 和 "Today" 等属性,所以初学者经常会觉得很困惑。DateAndTime 属于Microsoft.VisualBasic 命名空间,DateTime 属于 System 命名空间。因此,使用后者将帮助您将代码移植到另一种 .Net 语言(如 C# )。 但是,DateAndTime 类/模块包含 Visual Basic 中提供的所有旧版日期函数。

DateTime 属性和方法

下面列出了 DateTime 的一些常用属性:

编号属性描述
1Date获取此实例的日期
2Day获取此实例所表示的月份的一天。
3DayOfWeek获取此实例所表示的星期几
4DayOfYear获取此实例所代表的一年中的某一天。
5Hour获取此实例表示的日期的小时部分。
6Kind获取一个值,该值指示此实例表示的时间是基于本地时间,协调世界时(UTC),还是两者皆否。
7Millisecond获取此实例表示的日期的毫秒。
8Minute获取此实例表示的日期的分钟部分。
9Month获取此实例表示的日期的月份。
10Now获取在此计算机上设置为当前日期和时间的 DateTime 对象,表示为本地时间。
11Second获取此实例表示的日期的秒部分。
12Ticks获取表示此实例的日期和时间的刻度数。
13TimeOfDay获取此实例的一天中的时间。
14Today获取当前日期。
15UtcNow获取此实例表示的日期的年份组件。
16Year下表列出了 DateTime 的一些常用方法:

下面列出了 DateTime 的一些常用方法:

编号属性描述
1Public Function Add (value As TimeSpan) As DateTime返回一个新的 DateTime,将指定的 TimeSpan 的值添加到此实例的值中。
2Public Function AddDays ( value As Double) As DateTime返回一个新的 DateTime,将指定的天数添加到此实例的值中。
3Public Function AddHours (value As Double) As DateTime返回一个新的 DateTime,它将指定的小时数添加到此实例的值中。
4Public Function AddMinutes (value As Double) As DateTime返回一个新的 DateTime,将指定的分钟数添加到此实例的值中。
5Public Function AddMonths (months As Integer) As DateTime返回一个新的 DateTime,将指定的月数添加到此实例的值。
6Public Function AddSeconds (value As Double) As DateTime返回一个新的DateTime,将指定的秒数添加到此实例的值中。
7Public Function AddYears (value As Integer ) As DateTime返回一个新的 DateTime,将指定的年数添加到此实例的值中。
8Public Shared Function Compare (t1 As DateTime,t2 As DateTime) As Integer比较 DateTime 的两个实例并返回一个整数,该整数指示第一个实例是否早于,等于或晚于第二个实例。
9Public Function CompareTo (value As DateTime) As Integer将此实例的值与指定的 DateTime 值进行比较,并返回一个整数,该整数指示此实例是否早于,等于或晚于指定的 DateTime 值。
10Public Function Equals (value As DateTime) As Boolean返回一个值,该值表示此实例的值是否等于指定的 DateTime 实例的值。
11Public Shared Function Equals (t1 As DateTime, t2 As DateTime) As Boolean返回一个值,该值表示两个 DateTime 实例是否具有相同的日期和时间值。
12Public Overrides Function ToString As String将当前 DateTime 对象的值转换为其等效的字符串类型。

上面的方法列表并不完整,请访问 Microsoft 文档 以获取 DateTime 方法和属性的完整列表。


创建一个 DateTime 对象

您可以使用以下其中一种方法创建 DateTime 对象:

  • 通过从任何重载的 DateTime 构造函数调用 DateTime 构造函数。
  • 通过分配 DateTime 对象一个属性或方法返回的日期和时间值。
  • 通过解析日期和时间值的字符串表示。
  • 通过调用 DateTime 的隐式默认构造函数。

下面是一个实例

  1. Module Module1
  2. Sub Main()
  3. 'DateTime constructor: parameters year, month, day, hour, min, sec
  4. Dim date1 As New Date(2022, 6, 1, 12, 0, 0)
  5. 'initializes a new DateTime value
  6. Dim date2 As Date = #6/1/2022 12:00:52 AM#
  7. 'using properties
  8. Dim date3 As Date = Date.Now
  9. Dim date4 As Date = Date.UtcNow
  10. Dim date5 As Date = Date.Today
  11. Console.WriteLine(date1)
  12. Console.WriteLine(date2)
  13. Console.WriteLine(date3)
  14. Console.WriteLine(date4)
  15. Console.WriteLine(date5)
  16. Console.ReadKey()
  17. End Sub
  18. End Module

获取当前日期与时间

下面的实例演示如何在 VB 中获取当前日期和时间:

  1. Module dateNtime
  2. Sub Main()
  3. Console.Write("Current Time: ")
  4. Console.WriteLine(Now.ToLongTimeString)
  5. Console.ReadKey()
  6. End Sub
  7. End Module
  1. Module dateNtime
  2. Sub Main()
  3. Console.WriteLine("Current Date: ")
  4. Dim dt As Date = Today
  5. Console.WriteLine("Today is: {0}", dt)
  6. Console.ReadKey()
  7. End Sub
  8. 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 方法,指定预定义的或用户定义的日期格式。

下面的例子可以解释这一点:

  1. Module dateNtime
  2. Sub Main()
  3. Console.WriteLine("India Wins Freedom: ")
  4. Dim independenceDay As New Date(1947, 8, 15, 0, 0, 0)
  5. ' Use format specifiers to control the date display.
  6. Console.WriteLine(" Format 'd:' " & independenceDay.ToString("d"))
  7. Console.WriteLine(" Format 'D:' " & independenceDay.ToString("D"))
  8. Console.WriteLine(" Format 't:' " & independenceDay.ToString("t"))
  9. Console.WriteLine(" Format 'T:' " & independenceDay.ToString("T"))
  10. Console.WriteLine(" Format 'f:' " & independenceDay.ToString("f"))
  11. Console.WriteLine(" Format 'F:' " & independenceDay.ToString("F"))
  12. Console.WriteLine(" Format 'g:' " & independenceDay.ToString("g"))
  13. Console.WriteLine(" Format 'G:' " & independenceDay.ToString("G"))
  14. Console.WriteLine(" Format 'M:' " & independenceDay.ToString("M"))
  15. Console.WriteLine(" Format 'R:' " & independenceDay.ToString("R"))
  16. Console.WriteLine(" Format 'y:' " & independenceDay.ToString("y"))
  17. Console.ReadKey()
  18. End Sub
  19. End Module

预定义的日期/时间格式

下面列表列出了预定义的日期和时间格式名称。这些可能被用作 Format 函数的样式参数:

编号格式描述
1General Date 或 G显示日期和/或时间。 例如,2018 年 1 月 12 日上午 07 时 07 分 30 秒。
2Long Date, Medium Date 或 D根据当前所在地区的长日期格式显示日期。 例如,2018 年 12 月 16 日星期日。
3Short Date 或 d使用当前所在地区的短日期格式显示日期。 例如,2018 年 12 月 12 日。
4Long Time, Medium Time 或者 T使用当前所在地区的长时间格式显示时间; 通常包括小时,分钟,秒。 例如,01:07:30 AM。
5Short Time 或 t使用当前所在地区的短时间格式显示时间。 例如,上午 11:07。
6f根据当前所在地区格式显示长日期和短时间。例如,2018 年 12 月 16 日星期日上午12:15。
7F根据当前所在地区格式显示长日期和长时间。 例如,2018 年 12 月 16 日星期日上午12时15分31秒。
8g根据当前的文化格式显示短日期和短时间。例如,2018年12月16日上午12:15。
9M, m显示日期的月份和日期。 例如,12 月 16 日。
10R, r根据 RFC1123Pattern 属性格式化日期。
11s将日期和时间格式化为可排序的索引。例如:2018-12-16T12:07:31。
12u将日期和时间格式化为 GMT 可排序索引。 例如,2018-12-16 12:15:31Z。
13U将日期和时间格式化为 GMT 格式。 例如,2018 年 12 月 16 日星期日下午 6:07:31 PM。
14Y, y将日期格式化为年份和月份。例如,2018 年 12月。

对于其他格式,如用户定义的格式,请参考 Microsoft 文档.


DateAndTime 类的属性和方法

下面列出了 DateAndTime 类的一些常用属性:

编号属性描述
1Date根据系统或设置返回表示当前日期的字符串值。
2Now根据系统返回包含当前日期和时间的日期值。
3TimeOfDay根据系统返回或设置包含当前时间的日期值。
4Timer返回 Double 值,表示从午夜开始经过的秒数。
5TimeString根据系统或设置返回表示当前时间的字符串值。
6Today获取当前日期。

下面列出了 DateAndTime 类的一些常用方法:

编号方法描述
1Public Shared Function DateAdd (Interval As DateInterval, Number As Double, DateValue As DateTime) As DateTime返回包含添加了指定时间间隔的日期和时间值的日期值。
2Public Shared Function DateAdd (Interval As String,Number As Double,DateValue As Object ) As DateTime返回包含添加了指定时间间隔的日期和时间值的日期值。
3Public Shared Function DateDiff (Interval As DateInterval, Date1 As DateTime, Date2 As DateTime, DayOfWeek As FirstDayOfWeek, WeekOfYear As FirstWeekOfYear ) As Long返回一个 Long 值,表示两个 Date 值之间的时间间隔数。
4Public Shared Function DatePart (Interval As DateInterval, DateValue As DateTime, FirstDayOfWeekValue As FirstDayOfWeek, FirstWeekOfYearValue As FirstWeekOfYear ) As Integer返回包含给定 Date 值的指定组件的整数值。
5Public Shared Function Day (DateValue As DateTime) As Integer返回 1 到 31 之间的整数值,表示月份的一天。
6Public Shared Function Hour (TimeValue As DateTime) As Integer返回从0到23的整数值,表示一天中的小时。
7Public Shared Function Minute (TimeValue As DateTime) As Integer返回从 0 到 59 的整数值,代表小时的分钟数。
8Public Shared Function Month (DateValue As DateTime) As Integer返回 1 到 12 之间的整数值,表示一年的月份。
9Public Shared Function MonthName (Month As Integer, Abbreviate As Boolean) As String返回包含指定月份名称的字符串值。
10Public Shared Function Second (TimeValue As DateTime) As Integer返回从 0 到 59 的整数值,表示分钟的秒数。
11Public Overridable Function ToString As String返回表示当前对象的字符串。
12Public Shared Function Weekday (DateValue As DateTime, DayOfWeek As FirstDayOfWeek) As Integer返回一个整数值,其中包含表示星期几的数字。
13Public Shared Function WeekdayName (Weekday As Integer, Abbreviate As Boolean, FirstDayOfWeekValue As FirstDayOfWeek) As String返回包含指定星期几的名称的字符串值。
14Public Shared Function Year (DateValue As DateTime) As Integer返回表示年份的从 1 到 9999 的整数值。

以上列表并不完整。有关 DateAndTime 类的属性和方法的完整列表,请参考 Microsoft 文档

以下实例演示了一些属性和方法的使用:

  1. Module Module1
  2. Sub Main()
  3. Dim birthday As Date
  4. Dim bday As Integer
  5. Dim month As Integer
  6. Dim monthname As String
  7. ' Assign a date using standard short format.
  8. birthday = #7/27/1998#
  9. bday = Microsoft.VisualBasic.DateAndTime.Day(birthday)
  10. month = Microsoft.VisualBasic.DateAndTime.Month(birthday)
  11. monthname = Microsoft.VisualBasic.DateAndTime.MonthName(month)
  12. Console.WriteLine(birthday)
  13. Console.WriteLine(bday)
  14. Console.WriteLine(month)
  15. Console.WriteLine(monthname)
  16. Console.ReadKey()
  17. End Sub
  18. End Module