VB.Net - 日期和时间


您编写的大多数软件都需要实现某种形式的日期函数来返回当前日期和时间。日期是日常生活的一部分,因此不假思索地使用它们变得很容易。VB.Net 还提供了强大的日期算术工具,使操作日期变得容易。

日期数据类型包含日期值、时间值或日期和时间值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 模块都包含NowToday等属性,因此初学者常常会感到困惑。DateAndTime 类属于 Microsoft.VisualBasic 命名空间,DateTime 结构属于 System 命名空间。
因此,使用后者将帮助您将代码移植到另一种 .Net 语言(例如 C#)。但是,DateAndTime 类/模块包含 Visual Basic 中可用的所有旧版日期函数。

DateTime 结构的属性和方法

下表列出了日期时间结构的一些常用属性-

先生编号 财产 描述
1 日期 获取此实例的日期部分。
2 获取此实例表示的月份中的某一天。
3 星期几 获取此实例代表的星期几。
4 一年中的某一天 获取此实例代表的一年中的某一天。
5 小时 获取此实例表示的日期的小时部分。
6 种类 获取一个值,该值指示此实例表示的时间是基于本地时间、协调世界时 (UTC) 还是两者都不基于。
7 毫秒 获取此实例表示的日期的毫秒部分。
8 分钟 获取此实例表示的日期的分钟部分。
9 获取此实例表示的日期的月份部分。
10 现在 获取一个DateTime对象,该对象设置为此计算机上的当前日期和时间(表示为本地时间)。
11 第二 获取此实例表示的日期的秒部分。
12 蜱虫 获取表示此实例的日期和时间的刻度数。
13 时间 获取此实例的一天中的时间。
14 今天 获取当前日期。
15 即时通讯 获取一个DateTime对象,该对象设置为此计算机上的当前日期和时间,表示为协调世界时 (UTC)。
16 获取此实例表示的日期的年份部分。

下表列出了DateTime结构的一些常用方法-

先生编号 方法名称和描述
1

公共函数添加(值作为时间跨度)作为日期时间

返回一个新的 DateTime,它将指定 TimeSpan 的值添加到此实例的值。

2

公共函数AddDays(值作为Double)作为DateTime

返回一个新的 DateTime,它将指定的天数添加到此实例的值。

3

公共函数 AddHours(值为 Double)As DateTime

返回一个新的 DateTime,它将指定的小时数添加到该实例的值中。

4

公共函数 AddMinutes(值为 Double)As DateTime

返回一个新的 DateTime,它将指定的分钟数添加到此实例的值。

5

公共函数 AddMonths(整数月份)As DateTime

返回一个新的 DateTime,它将指定的月数添加到此实例的值。

6

公共函数AddSeconds(值作为Double)作为DateTime

返回一个新的 DateTime,它将指定的秒数添加到此实例的值。

7

公共函数 AddYears(值作为整数)作为日期时间

返回一个新的 DateTime,它将指定的年数添加到此实例的值。

8

公共共享函数 Compare (t1 As DateTime,t2 As DateTime) As Integer

比较 DateTime 的两个实例并返回一个整数,该整数指示第一个实例是早于、等于还是晚于第二个实例。

9

公共函数 CompareTo(值作为日期时间)作为整数

将此实例的值与指定的 DateTime 值进行比较,并返回一个整数,该整数指示此实例是早于、等于还是晚于指定的 DateTime 值。

10

公共函数等于(值作为日期时间)作为布尔值

返回一个值,指示此实例的值是否等于指定 DateTime 实例的值。

11

公共共享函数等于(t1 作为日期时间,t2 作为日期时间)作为布尔值

返回一个值,指示两个 DateTime 实例是否具有相同的日期和时间值。

12

Public 将函数 ToString 重写为字符串

将当前 DateTime 对象的值转换为其等效的字符串表示形式。

上面的方法列表并不详尽,请访问Microsoft 文档以获取 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 中获取当前日期和时间 -

当前时间 -

模块日期N时间
   子主函数()
      Console.Write("当前时间:")
      Console.WriteLine(Now.ToLongTimeString)
      控制台.ReadKey()
   结束子
终端模块

当上面的代码被编译并执行时,它会产生以下结果 -

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

当上面的代码被编译并执行时,它会产生以下结果 -

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),则文字将无效并导致编译器错误。

要将日期文字转换为您的区域设置格式或自定义格式,请使用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函数的样式参数 -

格式 描述
一般日期,或 G 显示日期和/或时间。例如,2012 年 1 月 12 日上午 07:07:30。
长日期、中日期或 D 根据当前区域性的长日期格式显示日期。例如,2012 年 12 月 16 日星期日。
短日期,或 d 使用当前区域性的短日期格式显示日期。例如,2012 年 12 月 12 日。
长时间、中等时间或T 使用当前文化的长时间格式显示时间;通常包括小时、分钟、秒。例如,上午 01:07:30。
短时间或t 使用当前文化的短时间格式显示时间。例如,上午 11:07。
F 根据当前文化的格式显示长日期和短时间。例如,2012 年 12 月 16 日星期日凌晨 12:15。
F 根据当前文化的格式显示长日期和长时间。例如,2012 年 12 月 16 日星期日上午 12:15:31。
G 根据您当前的文化格式显示短日期和短时间。例如,2012 年 12 月 16 日凌晨 12:15。
毫米 显示日期的月份和日期。例如,12 月 16 日。
, , , 根据 RFC1123Pattern 属性设置日期格式。
s 将日期和时间格式化为可排序索引。例如,2012-12-16T12:07:31。
将日期和时间格式化为 GMT 可排序索引。例如,2012-12-16 12:15:31Z。
U 将日期和时间设置为 GMT 格式,其中长日期和长时间。例如,2012 年 12 月 16 日星期日下午 6:07:31。
是,是 将日期格式设置为年和月。例如,2012 年 12 月。

对于其他格式(例如用户定义格式),请参阅Microsoft 文档

DateAndTime 类的属性和方法

下表列出了DateAndTime类的一些常用属性-

先生编号 属性及描述
1

日期

根据您的系统返回或设置表示当前日期的字符串值。

2

现在

根据您的系统返回包含当前日期和时间的日期值。

3

时间

根据您的系统返回或设置包含当前时间的日期值。

4

定时器

返回一个 Double 值,表示自午夜以来经过的秒数。

5

时间串

根据您的系统返回或设置表示当前时间的字符串值。

6

今天

获取当前日期。

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

先生编号 方法名称和描述
1

公共共享函数 DateAdd (Interval As DateInterval, Number As Double, DateValue As DateTime) As DateTime

返回一个日期值,其中包含已添加指定时间间隔的日期和时间值。

2

公共共享函数 DateAdd (Interval As String,Number As Double,DateValue As Object ) As DateTime

返回一个日期值,其中包含已添加指定时间间隔的日期和时间值。

3

公共共享函数 DateDiff (Interval As DateInterval, Date1 As DateTime, Date2 As DateTime, DayOfWeek As FirstDayOfWeek, WeekOfYear As FirstWeekOfYear ) As Long

返回一个 Long 值,指定两个日期值之间的时间间隔数。

4

公共共享函数 DatePart (Interval As DateInterval, DateValue As DateTime, FirstDayOfWeekValue As FirstDayOfWeek, FirstWeekOfYearValue As FirstWeekOfYear ) As Integer

返回包含给定日期值的指定部分的整数值。

5

公共共享函数日(DateValue As DateTime)作为整数

返回 1 到 31 之间的整数值,表示该月中的第几天。

6

公共共享函数 Hour (TimeValue As DateTime) As Integer

返回 0 到 23 之间的整数值,表示一天中的小时。

7

公共共享函数分钟(TimeValue As DateTime)作为 Integer

返回 0 到 59 之间的整数值,表示一小时中的分钟。

8

公共共享函数月(DateValue As DateTime)作为整数

返回 1 到 12 之间的整数值,表示一年中的月份。

9

公共共享函数 MonthName(月份为整数,缩写为布尔值)作为字符串

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

10

公共共享函数 Second (TimeValue As DateTime) As Integer

返回 0 到 59 之间的整数值,表示分钟的秒数。

11

公共可重写函数 ToString As String

返回表示当前对象的字符串。

12

公共共享函数工作日(DateValue 作为 DateTime,DayOfWeek 作为 FirstDayOfWeek)作为 Integer

返回一个整数值,其中包含表示星期几的数字。

13

公共共享函数 WeekdayName(工作日为整数,缩写为布尔值,FirstDayOfWeekValue 为 FirstDayOfWeek)为字符串

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

14

公共共享函数年份(DateValue As DateTime)作为整数

返回代表年份的从 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

当上面的代码被编译并执行时,它会产生以下结果 -

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