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