ASP.NET DateTime 日期和时间

ASPX 日期函数的应用、获取当前的时间,使用自订日期和时间格式字串、ToString() 日期格式化「特定文化格式」,将 DateTimeDateTimeOffset 值转换及计算两个日期的期间,计算差异的时间、天数、月数之比较或判断日期。

Dim date1 As New DateTime() '0001年1月1日 / 0001/1/1 上午 12:00:00
Dim date1 As DateTime = DateTime.UtcNow 'UTC 世界标准的格林威治时间
Dim date1 As DateTime = DateTime.Now '电脑目前的日期和时间,以本地时间表示。

只需要取得日期而时间为 上午 12:00:00 时间元件设定为 00:00:00

Dim date1 As DateTime = DateTime.Today '2020/6/30 上午 12:00:00 (时间为 00:00:00)
Dim date1 As DateTimeOffset = New DateTimeOffset(Today())
Dim dateNow As DateTime = DateTime.Now
Dim dateOnly As Date = dateNow.Date '2020/6/30

自订日期和时间,可以为日期或日期加时间

DateTime(Int32, Int32, Int32)
Dim date1 As New DateTime(2020, 6, 30) '2020/6/30 上午 12:00:00
DateTime(Int32, Int32, Int32, Int32, Int32, Int32)
Dim date1 As New DateTime(2020, 6, 30, 15, 30, 10) '2020/6/30 下午 02:30:10

广泛的日期范围,不会在出现因日期范围出问题。

Dim date1 As New DateTime(DateTime.MinValue.Ticks) '上午 12:00:00
Dim date1 As New DateTime(DateTime.MaxValue.Ticks) '9999/12/31 下午 11:59:59

使用在 ASP.NET Programme 应用程式读取日期与时间是常见方式。通过读取日期与时间、Parse 解析字串日期与时间,可以创建各种预订系统、添加时间方法、减去日期方法应用程式、Countdown 倒数计时器等应用。



基本属性、读取日期与时间

date1.Year = 2020
date1.Month = 6
date1.Day = 30
date1.DayOfWeek = 2
date1.Hour = 15
date1.Minute = 30
date1.Second = 10
date1.Millisecond = 0
date1.Ticks = 637291278100000000

使用 ToString(String) 转换自订日期与时间格式字串

指定格式与「当前文化特性」格式,将目前 DateTime 物件的值转换为其相等字串标记表示。当前文化特性是依据使用者电脑语系设置会有差异,如果用于日期与时间比较时以数字为基础比较安全,或是使用 Parse(), ParseExact() 转换为其相等。
以下于 Session.LCID = 1028 显示的结果。

date1.ToString("yyyy/MM/dd") = 2020/06/30
date1.ToString("yyyy") = 2020
date1.ToString("MMMM") = 六月 *
date1.ToString("MMM") = 六月 *
date1.ToString("MM") = 06
date1.ToString("dd") = 30
date1.ToString("ddd") = 週二 *
date1.ToString("dddd") = 星期二 *
date1.ToString("hh") = 03
date1.ToString("mm") = 30
date1.ToString("ss") = 10
date1.ToString("yyyyMMddHHmmss") = 20200630153010 '以字串储存时的应用
date1.ToString("zz") = +08 '与 UTC 世界标准时间相差的时数
date1.ToString("zzz") = +08:00 '与 UTC 世界标准时间相差的时数和分钟数

Dim weekName() As String = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }
weekName(date1.DayOfWeek)

使用 TypeName(date1.DayOfWeek) 其格式为 DayOfWeekArray 阵列对应星期是没问题。




调整日期与时间,增加或减少日期与时间 Method 方法

在程式设计 Programming 常会需要依据当前日期或时间来调整日期与时间的设置,例如计算两个日期之间的差异,或者根据某些规则增加或减少日期与时间。例如需要计算某个活动的截止日期,或者根据设定时间呈现网页中部份。能够灵活地处理日期与时间的格式、日期转换,时间运算和日期间隔比较。

Dim date1 As New DateTime(2020, 6, 30, 15, 30, 10) '2020/6/30 下午 02:30:10

date1.AddYears(Int32) 返回新的 DateTime 将日期的年之数值加上「指定调整的年数」。

Dim date2 = date1.AddYears(1) '2021/6/30 下午 02:30:10

date1.AddMonths(Int32) 返回新的 DateTime 将日期的月份的值加上「指定调整的月数」。

Dim date2 = date1.AddMonths(1) '2020/7/30 下午 02:30:10 正数为增加
Dim date2 = date1.AddMonths(-2) '2020/4/30 下午 02:30:10 负数为减少

date1.AddDays(Double) 返回新的 DateTime 将日期的天数的值加上指定调整的天数。指定的整数和带小数之天数。

Dim date2 = date1.AddDays(1) '2020/7/1 下午 02:30:10 自动计算月份的进制
Dim date2 = date1.AddDays(-7) '2020/6/23 下午 02:30:10 往前一星期
Dim date2 = date1.AddDays(7) '2020/7/7 下午 02:30:10 往下一星期
Dim date2 = date1.AddDays(1.2) '2020/7/1 下午 08:18:10 带小数增加时间

date1.AddHours(Double) 返回新的 DateTime 将时间以小时数值加上指定调整的小时数。指定的整数和带小数之时数。

Dim date2 = date1.AddHours(4) '2020/6/30 下午 07:30:10
Dim date2 = date1.AddHours(24) '2020/7/1 下午 02:30:10 等于增加一天
Dim date2 = date1.AddHours(-2.5) '2020/6/30 下午 01:00:10 带小数减少时间

date1.AddMinutes(Double) 返回新的 DateTime 将时间以分钟数值加上指定调整的分钟数。指定的整数和带小数之分钟数。

Dim date2 = date1.AddMinutes(5) '2020/6/30 下午 03:35:10

date1.AddSeconds(Double) 返回新的 DateTime 将时间以秒数值加上指定调整的秒数。指定的整数和带小数之秒数。

Dim date2 = date1.AddSeconds(6) '2020/6/30 下午 03:30:16

AddMilliseconds(Double) 返回新的 DateTime 将时间以毫秒数值加上指定调整的毫秒数。
AddTicks(Int64) 返回新的 DateTime 将时间以刻度数值加上指定调整的刻度数。
Add(TimeSpan) 返回新的 DateTime 将日期与时间的值加上指定的「时间间隔」。


日期六月小、七月大、八月大的情况

Dim date1 As New DateTime(2020, 7, 31, 15, 30, 10) '2020/7/31 下午 02:30:10
Dim date2 = date1.AddMonths(-1) '2020/6/30 下午 02:30:10
Dim date2 = date1.AddMonths(1) '2020/8/31 下午 02:30:10



TimeSpan 时间间隔

TimeSpan 时间间隔是 .NET Framework 和 C# 中用于表示时间间隔的数据类型。具有许多实用的功能、可以表示从几微秒到几个世纪的任何时间长度 TimeSpan 可以轻松地进行时间计算、特定时间调度任务、比较和格式化或媒体播放位置等计算。

TimeSpan 时间间隔或经过的时间,以正数或负数天数、小时、分钟、秒数测量。

Dim dateA As New DateTime(2020, 7, 25, 8, 30, 0)
Dim dateB As New DateTime(2020, 8, 5, 17, 40, 15)

取出「时间间隔」格式为 TimeSpan 天数、小时、分钟、秒数

Dim dayDiffs As TimeSpan = dateB - dateA
dayDiffs.ToString() = 11.09:10:15 'TimeSpan
dayDiffs.Days = 11 '天数、七月大
dayDiffs.Hours = 9 '小时(仅是两个时间的小时部份)
dayDiffs.Minutes = 10 '分钟(仅是两个时间的分钟部份)
dayDiffs.Seconds = 15 '秒数(仅是两个时间的秒数部份)


依照「时间间隔」之天数、小时、分钟、秒数计算 Total 总数。

dayDiffs.TotalDays = 11.3821180555556
dayDiffs.TotalHours = 273.170833333333
dayDiffs.TotalMinutes = 16390.25
dayDiffs.TotalSeconds = 983415