- VB.Net 基础教程
- VB.Net - 首页
- VB.Net - 概述
- VB.Net - 环境设置
- VB.Net - 程序结构
- VB.Net - 基本语法
- VB.Net - 数据类型
- VB.Net - 变量
- VB.Net - 常量
- VB.Net - 修饰符
- VB.Net - 语句
- VB.Net - 指令
- VB.Net - 运算符
- VB.Net - 决策
- VB.Net - 循环
- VB.Net - 字符串
- VB.Net - 日期和时间
- VB.Net - 数组
- VB.Net - 集合
- VB.Net - 函数
- VB.Net - 子程序
- VB.Net - 类和对象
- VB.Net - 异常处理
- VB.Net - 文件处理
- VB.Net - 基本控件
- VB.Net - 对话框
- VB.Net - 高级窗体
- VB.Net - 事件处理
- VB.Net 高级教程
- VB.Net - 正则表达式
- VB.Net - 数据库访问
- VB.Net - Excel 表格
- VB.Net - 发送邮件
- VB.Net - XML 处理
- VB.Net - Web编程
- VB.Net 有用资源
- VB.Net - 快速指南
- VB.Net - 有用资源
- VB.Net - 讨论
VB.Net - 日期和时间
您编写的多数软件都需要实现某种形式的日期函数,以返回当前日期和时间。日期在日常生活中如此常见,以至于在不加思考的情况下就能轻松地使用它们。VB.Net 还提供了强大的日期运算工具,使日期操作变得容易。
Date 数据类型包含日期值、时间值或日期和时间值。Date 的默认值为 0:00:00(午夜),即公元 1 年 1 月 1 日。等效的 .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 命名空间。 |
DateTime 结构的属性和方法
下表列出了 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 | 获取一个 DateTime 对象,该对象设置为这台计算机上的当前日期和时间,表示为协调世界时 (UTC)。 |
16 | Year | 获取此实例代表的日期的年份部分。 |
下表列出了 DateTime 结构中一些常用的 方法:
序号 | 方法名称和描述 |
---|---|
1 |
Public Function Add (value As TimeSpan) As DateTime 返回一个新的 DateTime,该 DateTime 将指定 TimeSpan 的值添加到此实例的值。 |
2 |
Public Function AddDays ( value As Double) As DateTime 返回一个新的 DateTime,该 DateTime 将指定的天数添加到此实例的值。 |
3 |
Public Function AddHours (value As Double) As DateTime 返回一个新的 DateTime,该 DateTime 将指定的小时数添加到此实例的值。 |
4 |
Public Function AddMinutes (value As Double) As DateTime 返回一个新的 DateTime,该 DateTime 将指定的分钟数添加到此实例的值。 |
5 |
Public Function AddMonths (months As Integer) As DateTime 返回一个新的 DateTime,该 DateTime 将指定的月份数添加到此实例的值。 |
6 |
Public Function AddSeconds (value As Double) As DateTime 返回一个新的 DateTime,该 DateTime 将指定的秒数添加到此实例的值。 |
7 |
Public Function AddYears (value As Integer ) As DateTime 返回一个新的 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(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,则该文本将无效并导致编译器错误。
要将日期文本转换为您的区域设置的格式或自定义格式,请使用 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 函数的 style 参数:
格式 | 描述 |
---|---|
常规日期或 G | 显示日期和/或时间。例如,1/12/2012 07:07:30 AM。 |
长日期、中日期或 D | 根据您当前文化的长日期格式显示日期。例如,星期日,2012 年 12 月 16 日。 |
短日期或 d | 使用您当前文化的短日期格式显示日期。例如,12/12/2012。 |
长时间、中时间或 T | 使用您当前文化的长时间格式显示时间;通常包括小时、分钟、秒。例如,上午 01:07:30。 |
短时间或 t | 使用您当前文化的短时间格式显示时间。例如,上午 11:07。 |
f | 根据您当前文化的格式显示长日期和短时间。例如,星期日,2012 年 12 月 16 日 上午 12:15。 |
F | 根据您当前文化的格式显示长日期和长时间。例如,星期日,2012 年 12 月 16 日 上午 12:15:31。 |
g | 根据您当前文化的格式显示短日期和短时间。例如,12/16/2012 上午 12:15。 |
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 类中一些常用的 属性:
序号 | 属性和描述 |
---|---|
1 | Date 返回或设置一个字符串值,表示根据您的系统当前日期。 |
2 | Now 返回一个 Date 值,包含根据您的系统当前日期和时间。 |
3 | TimeOfDay 返回或设置一个 Date 值,包含根据您的系统当前时间。 |
4 | 计时器 返回一个 Double 值,表示自午夜以来经过的秒数。 |
5 | 时间字符串 返回或设置一个字符串值,表示根据您的系统当前时间。 |
6 | Today 获取当前日期。 |
下表列出了一些常用的DateAndTime类的方法:
序号 | 方法名称和描述 |
---|---|
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 返回一个 Long 值,指定两个 Date 值之间的时间间隔数。 |
4 |
Public Shared Function DatePart (Interval As DateInterval, DateValue As DateTime, FirstDayOfWeekValue As FirstDayOfWeek, FirstWeekOfYearValue As FirstWeekOfYear) As Integer 返回一个 Integer 值,包含给定 Date 值的指定组件。 |
5 |
Public Shared Function Day (DateValue As DateTime) As Integer 返回一个 Integer 值(1 到 31),表示月份中的某一天。 |
6 | Public Shared Function Hour (TimeValue As DateTime) As Integer 返回一个 Integer 值(0 到 23),表示一天中的小时。 |
7 |
Public Shared Function Minute (TimeValue As DateTime) As Integer 返回一个 Integer 值(0 到 59),表示小时中的分钟。 |
8 |
Public Shared Function Month (DateValue As DateTime) As Integer 返回一个 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 返回一个 Integer 值(0 到 59),表示分钟中的秒数。 |
11 |
Public Overridable Function ToString As String 返回表示当前对象的字符串。 |
12 |
Public Shared Function Weekday (DateValue As DateTime, DayOfWeek As FirstDayOfWeek) As Integer 返回一个 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 返回一个 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