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模块都包含诸如Now和Today之类的属性,因此初学者经常会感到困惑。 DateAndTime类属于Microsoft.VisualBasic命名空间,DateTime结构属于System命名空间。 因此,使用后一种将使你移植你的代码到另一个.Net语言更加容易,如C#。 但是,DateAndTime类/模块包含Visual Basic中所有可用的旧日期函数。 |
DateTime结构的属性和方法
下表列出了一些DateTime结构的常用属性 :
S.N | 属性 | 描述 |
---|---|---|
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 | 获取设置为此计算机上当前日期和时间的DateTime对象,以协调世界时(UTC)表示。 |
16 | Year | 获取此实例表示的日期的年份组件。 |
下表列出了DateTime结构的一些常用方法:
SN | 方法名称和说明 |
---|---|
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对象的值转换为其等效字符串表示形式。 |
以上列出的方法并不详尽,请访问微软的文档以获取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: 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,该文字将无效并导致编译器错误。
要将Date字面值转换为语言环境的格式或自定义格式,请使用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函数的样式参数:
格式 | 描述 |
---|---|
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 AM。. |
Short Time or t | 使用当前区域的短时格式显示时间。 例如,11:07 AM。. |
f | 根据您当前的区域格式显示长日期和短时间。 例如,2012年12月16日星期日上午12:15。. |
F | 根据您当前的区域格式显示长日期和长时间。 例如,2012年12月16日星期日12:15:31 AM。. |
g | 根据您当前的区域格式显示短日期和短时间。 例如,12/16/2012 12:15 AM。. |
M, m | 显示日期的月份和日期。 例如,12月16日。. |
R, r | 根据RFC1123Pattern属性格式化日期。. |
s | 将日期和时间格式化为可排序索引。 例如,2012-12-16T12:07:31。. |
u | 将日期和时间格式设置为GMT可排序索引。 例如,2012-12-16 12:15:31Z。. |
U | 将日期和时间格式设置为长日期和长时间,格式为GMT。 例如,星期日,2012年12月16日下午6:07:31。. |
Y, y | 将日期格式设置为年和月。 例如,2012年12月。. |
对于其他格式,如用户定义的格式,请参阅Microsoft文档 。
属性和DateAndTime类的方法
下表列出了一些DateAndTime类的常用属性 :
SN | 属性 | 描述 |
---|---|---|
1 | Date | 返回或设置根据系统代表当前日期的字符串值。 |
2 | Now | 返回一个包含根据系统的当前日期和时间的日期值。 |
3 | TimeOfDay | 返回或设置根据你的系统包含当天的当前时间的日期值。 |
4 | Timer | 返回表示自午夜起经过的秒数为Double值。 |
5 | TimeString | 返回或设置根据你的系统代表一天的当前时间的字符串值。 |
6 | Today | 获取当前日期。 |
下表列出了一些DateAndTime类的常用方法 :
SN | 方法名称和说明 |
---|---|
1 | Public Shared Function DateAdd (Interval As DateInterval, Number As Double, DateValue As DateTime) As DateTime 返回包含已添加指定时间间隔的日期和时间值的Date值。 |
2 | Public Shared Function DateAdd (Interval As String,Number As Double,DateValue As Object ) As DateTime 返回包含已添加指定时间间隔的日期和时间值的Date值。 |
3 | Public Shared Function DateDiff (Interval As DateInterval, Date1 As DateTime, Date2 As DateTime, DayOfWeek As FirstDayOfWeek, WeekOfYear As FirstWeekOfYear ) As Long 返回指定两个日期值之间的时间间隔数的长整型值。 |
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 公共共享函数Hour (TIMEVALUE为DATETIME)作为整数 返回从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 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