当前位置: 首页 > 教程 > VB.Net >

VB.Net日期

精华
小牛编辑
131浏览
2023-03-14

大部分编写的软件都需要实现某种形式,返回当前日期和时间的日期函数。日期是日常生活的重要组成部分。 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

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

日期时间结构的属性和方法

下表列出了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(2018, 12, 16, 12, 0, 0)
      'initializes a new DateTime value'
      Dim date2 As Date = #12/16/2018 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

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

F:\worksp\vb.net\datetime>vbc createdatatime.vb
F:\worksp\vb.net\datetime>createdatatime.exe
2018/12/16 12:00:00
2018/12/16 0:00:52
2017/11/8 3:16:59
2017/11/8 7:16:59
2017/11/8 0:00:00

获取当前日期和时间

当前时间:

以下程序演示如何在VB.Net中获取当前日期和时间:

Module dateNtime
   Sub Main()
      Console.Write("Current Time: ")
      Console.WriteLine(Now.ToLongTimeString)
      Console.ReadKey()
   End Sub
End Module

执行上面示例代码,得到以下结果 -

F:\worksp\vb.net\datetime>vbc dateNtime.vb
F:\worksp\vb.net\datetime>dateNtime.exe
Current Time: 3:19:02

以下程序演示如何在VB.Net中获取当前日期:

当前日期

Module dateNtime2
   Sub Main()
      Console.WriteLine("Current Date: ")
      Dim dt As Date = Today
      Console.WriteLine("Today is: {0}", dt)
      Console.ReadKey()
   End Sub
End Module

执行上面示例代码,得到以下结果 -

F:\worksp\vb.net\datetime>vbc dateNtime2.vb
F:\worksp\vb.net\datetime>dateNtime2.exe
Current Date:
Today is: 2017/11/8 0:00:00

格式化日期

日期文字应该包含在散列符号(##)中,并以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

执行上面示例代码,得到以下结果 -

F:\worksp\vb.net\datetime>vbc dateFormat.vb
Microsoft (R) Visual Basic Compiler version 14.0.1038
for Visual Basic 2012
Copyright (c) Microsoft Corporation.  All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to Visual Basic 2012, which is no longer the latest version. For compilers that support newer versions of the Visual Basic programming language, see http://go.microsoft.com/fwlink/?LinkID=533241


F:\worksp\vb.net\datetime>dateFormat.exe
India Wins Freedom:
 Format 'd:' 1947/8/15
 Format 'D:' 1947年8月15日
 Format 't:' 0:00
 Format 'T:' 0:00:00
 Format 'f:' 1947年8月15日 0:00
 Format 'F:' 1947年8月15日 0:00:00
 Format 'g:' 1947/8/15 0:00
 Format 'G:' 1947/8/15 0:00:00
 Format 'M:' 8月15日
 Format 'R:' Fri, 15 Aug 1947 00:00:00 GMT
 Format 'y:' 1947年8月

预定义的日期/时间格式

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

编号 格式 描述
1 General DateG 显示日期和/或时间。 例如,2018年1月12日上午07时07分30秒。
2 Long Date,Medium DateD 根据当前所在地区的长日期格式显示日期。 例如,2018年12月16日星期日。
3 Short Dated 使用当前所在地区的短日期格式显示日期。 例如,2018年12月12日。
4 Long Time,Medium Time 或者 T 使用当前所在地区的长时间格式显示时间; 通常包括小时,分钟,秒。 例如,01:07:30 AM。
5 Short Timet 使用当前所在地区的短时间格式显示时间。 例如,上午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 返回131之间的整数值,表示月份的一天。
6 Public Shared Function Hour (TimeValue As DateTime) As Integer 返回从023的整数值,表示一天中的小时。
7 Public Shared Function Minute (TimeValue As DateTime) As Integer 返回从059的整数值,代表小时的分钟数。
8 Public Shared Function Month (DateValue As DateTime) As Integer 返回112之间的整数值,表示一年的月份。
9 Public Shared Function MonthName (Month As Integer, Abbreviate As Boolean) As String 返回包含指定月份名称的字符串值。
10 Public Shared Function Second (TimeValue As DateTime) As Integer 返回从059的整数值,表示分钟的秒数。
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 返回表示年份的从19999的整数值。

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

以下程序演示了一些这些和方法的使用:

Module Dateandtime
   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/1994#
      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

执行上面示例代码,得到以下结果 -

F:\worksp\vb.net\datetime>vbc Dateandtime.vb
F:\worksp\vb.net\datetime>Dateandtime.exe
1994/7/27 0:00:00
27
7
七月