VB.Net 日期和时间

  • 日期和时间

    您编写的大多数软件都需要实现某种形式的日期函数,以返回当前日期和时间。日期是日常生活中的重要组成部分,因此无需思考就可以轻松地与他们合作。VB.Net还提供了用于日期算术的强大工具,使日期的操作变得容易。的日期数据类型包含日期值,时间值或日期和时间值。Date的默认值为0001年1月1日的0:00:00(午夜)。等效的.NET数据类型为System.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结构的一些常用属性-
    属性 描述
    Date 获取此实例的日期组件。
    Day 获取此实例所表示的月份的日期。
    DayOfWeek 获取此实例所表示的星期几。
    DayOfYear 获取此实例所表示的年份。
    Hour 获取此实例所表示的日期的小时组件。
    Kind 获取一个值,该值指示此实例所表示的时间是基于本地时间、协调世界时(UTC)还是两者都不基于。
    Millisecond 获取此实例所表示的日期的毫秒组件。
    Minute 获取此实例所表示的日期的分钟组件。
    Month 获取此实例所表示的日期的month组件。
    Now 获取设置为此计算机上的当前日期和时间(表示为本地时间)的DateTime对象。
    Second 获取此实例所表示的日期的秒组件。
    Ticks 获取表示此实例的日期和时间的节拍数。
    TimeOfDay 获取此实例的时间。
    Today 获取当前日期。
    UtcNow 获取设置为此计算机上的当前日期和时间的DateTime对象,该日期和时间表示为协调世界时(UTC)。
    Year 获取此实例所表示的日期的年份组件。
    下表列出了DateTime结构的一些常用方法-
    方法 描述
    Public Function Add (value As TimeSpan) As DateTime 返回一个新的DateTime,它将指定的TimeSpan的值添加到此实例的值。
    Public Function AddDays ( value As Double) As DateTime 返回一个新的DateTime,它将指定的天数添加到此实例的值。
    Public Function AddHours (value As Double) As DateTime 返回一个新的DateTime,它将指定的小时数添加到该实例的值。
    Public Function AddMinutes (value As Double) As DateTime 返回一个新的DateTime,它将指定的分钟数添加到此实例的值。
    Public Function AddMonths (months As Integer) As DateTime 返回一个新的DateTime,它将指定的月份数添加到该实例的值。
    Public Function AddSeconds (value As Double) As DateTime 返回一个新的DateTime,它将指定的秒数添加到此实例的值。
    Public Function AddYears (value As Integer ) As DateTime 返回一个新的DateTime,它将指定的年数添加到此实例的值。
    Public Shared Function Compare (t1 As DateTime,t2 As DateTime) As Integer 比较两个DateTime实例,并返回一个整数,该整数指示第一个实例是早于,等于还是晚于第二个实例。
    Public Function CompareTo (value As DateTime) As Integer 将此实例的值与指定的DateTime值进行比较,并返回一个整数,该整数指示此实例是早于,等于还是晚于指定的DateTime值。
    Public Function Equals (value As DateTime) As Boolean 返回一个值,该值指示此实例的值是否等于指定的DateTime实例的值。
    Public Shared Function Equals (t1 As DateTime, t2 As DateTime) As Boolean 返回一个值,该值指示两个DateTime实例是否具有相同的日期和时间值。
    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(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中获取当前日期和时间-
    当前时间
    
    Module dateNtime
       Sub Main()
          Console.Write("Current Time: ")
          Console.WriteLine(Now.ToLongTimeString)
          Console.ReadKey()
       End Sub
    End Module
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Current Time: 03:02:19
    
    当前日期
    
    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
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Current Date: 
    Today is: 10/10/2020 00:00:00
    
  • 格式化日期

    Date 字面量应包含在井号(##)中,并以M/d/yyyy格式指定,例如#12/16/2012#。否则,您的代码可能会根据运行应用程序的区域设置而改变。
    例如,您将2012年2月6日指定为#2/6/2012#的Date 字面量。对于使用mm/dd/yyyy格式的语言环境来说,这是正确的。但是,在使用dd/mm /yyyy格式的语言环境中,您的字面量将编译为2012年6月2日。如果一个语言环境使用另一种格式,即yyyy/mm/dd,则该字面量将无效并导致编译器错误。要将Date字面量转换为您的语言环境格式或自定义格式,请使用String类的Format函数,指定预定义或用户定义的日期格式。
    下面的示例演示了这一点。
    
    Module dateNtime
       Sub Main()
          Console.WriteLine("China Build: ")
          Dim independenceDay As New Date(1949, 10, 01, 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
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    China Build: 
    Format 'd:' 10/01/1949
    Format 'D:' Saturday, 01 October 1949
    Format 't:' 00:00
    Format 'T:' 00:00:00
    Format 'f:' Saturday, 01 October 1949 00:00
    Format 'F:' Saturday, 01 October 1949 00:00:00
    Format 'g:' 10/01/1949 00:00
    Format 'G:' 10/01/1949 00:00:00
    Format 'M:' October 01
    Format 'R:' Sat, 01 Oct 1949 00:00:00 GMT
    Format 'y:' 1949 October
    
  • 预定义的日期/时间格式

    下表列出了预定义的日期和时间格式名称。这些可以按名称用作Format函数的样式参数-
    格式 描述
    General Date, or G 显示日期和/或时间。例如,1/12/2012 07:07:30 AM。
    Long Date,Medium Date, or D 根据当前区域性的长日期格式显示日期。例如,2012年12月16日,星期天。
    Short Date, or d 使用当前区域性的短日期格式显示日期。例如,12/12/2012。
    Long Time,Medium Time, orT 使用当前区域性的长时间格式显示时间;通常包括小时、分钟、秒。例如,凌晨01:07:30。
    Short Time or t 使用当前区域性的短时间格式显示时间。例如,上午11:07。
    f 根据当前区域性的格式显示长日期和短时间。例如,2012年12月16日星期日中午12点15分。
    F 根据当前区域性的格式显示长日期和长时间。例如,2012年12月16日星期日12:15:31 AM。
    g 根据当前区域性的格式显示短日期和短时间。例如,2012年12月16日上午12:15。
    M, m 显示日期的月份和日期。例如,12月16日。
    R, r 根据RFC1123Pattern属性格式化日期。
    s 将日期和时间格式化为可排序的索引。例如,2012 - 12 - 16 - t12:07:31。
    u 将日期和时间格式化为GMT可排序索引。例如,2012-12-16 12:15:31Z。
    U 将日期和时间格式化为GMT格式。例如,2012年12月16日星期日下午6:07:31。
    Y, y 将日期格式化为年和月。例如,2012年12月。
  • DateAndTime类的属性和方法

    下表列出了DateAndTime类的一些常用属性-
    属性 描述
    Date 根据您的系统返回或设置表示当前日期的字符串值。
    Now 返回一个日期值,其中包含根据系统指定的当前日期和时间。
    TimeOfDay 根据您的系统返回或设置包含当前时间的日期值。
    Timer 返回一个双精度值,表示从午夜开始经过的秒数。
    TimeString 根据您的系统返回或设置表示当前时间的字符串值。
    Today 获取当前日期。
    下表列出了DateAndTime类的一些常用方法-
    方法 描述
    Public Shared Function DateAdd (Interval As DateInterval, Number As Double, DateValue As DateTime) As DateTime 返回一个日期值,其中包含添加了指定时间间隔的日期和时间值。
    Public Shared Function DateAdd (Interval As String,Number As Double,DateValue As Object ) As DateTime 返回一个日期值,其中包含添加了指定时间间隔的日期和时间值。
    Public Shared Function DateDiff (Interval As DateInterval, Date1 As DateTime, Date2 As DateTime, DayOfWeek As FirstDayOfWeek, WeekOfYear As FirstWeekOfYear ) As Long 返回一个长值,该值指定两个日期值之间的时间间隔数。
    Public Shared Function DatePart (Interval As DateInterval, DateValue As DateTime, FirstDayOfWeekValue As FirstDayOfWeek, FirstWeekOfYearValue As FirstWeekOfYear ) As Integer 返回包含给定日期值的指定组件的整数值。
    Public Shared Function Day (DateValue As DateTime) As Integer 返回一个从1到31的整数值,表示该月的日期。
    Public Shared Function Hour (TimeValue As DateTime) As Integer 返回一个从0到23的整数值,表示一天中的每小时。
    Public Shared Function Minute (TimeValue As DateTime) As Integer 返回一个从0到59的整数值,表示一小时的分。
    Public Shared Function Month (DateValue As DateTime) As Integer 返回一个从1到12的整数值,表示一年中的月份。
    Public Shared Function MonthName (Month As Integer, Abbreviate As Boolean) As String 返回包含指定月份名称的字符串值。
    Public Shared Function Second (TimeValue As DateTime) As Integer 返回一个从0到59的整数值,表示一分钟中的秒。
    Public Overridable Function ToString As String 返回表示当前对象的字符串。
    Public Shared Function Weekday (DateValue As DateTime, DayOfWeek As FirstDayOfWeek) As Integer 返回一个包含表示星期几的数字的整数值。
    Public Shared Function WeekdayName (Weekday As Integer, Abbreviate As Boolean, FirstDayOfWeekValue As FirstDayOfWeek) As String 返回包含指定工作日名称的字符串值。
    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
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    07/27/1998 00:00:00
    27
    7
    July