ASP.NET DateTime 日期和時間

ASPX 日期函數的應用、獲取當前的時間,使用自訂日期和時間格式字串、ToString() 日期格式化「特定文化格式」,將 DateTime 或 DateTimeOffset 值轉換及計算兩個日期的期間,計算差異的時間、天數、月數之比較或判斷日期。

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 下午 03: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


基本屬性、讀取日期與時間

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 方法

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

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

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

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

Dim date2 = date1.AddMonths(1) '2020/7/30 下午 03:30:10 正數為增加
Dim date2 = date1.AddMonths(-2) '2020/4/30 下午 03:30:10 負數為減少

date1.AddDays(Double) 返回新的 DateTime 將日期的天數的值加上指定調整的天數。指定的整數和帶小數之天數。

Dim date2 = date1.AddDays(1) '2020/7/1 下午 03:30:10 自動計算月份的進制
Dim date2 = date1.AddDays(-7) '2020/6/23 下午 03:30:10 往前一星期
Dim date2 = date1.AddDays(7) '2020/7/7 下午 03: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 下午 03: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 下午 03:30:10
Dim date2 = date1.AddMonths(1) '2020/8/31 下午 03:30:10
Dim date2 = date1.AddMonths(-1) '2020/6/30 下午 03:30:10



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