DateTime類是.Net中用於處理時間類型數據的。
一、字段
MaxValue 表示 DateTime 的最大可能值。此字段為只讀。
MinValue 表示 DateTime 的最小可能值。此字段為只讀。
二、屬性
Date 獲取此實例的日期部分。
Day 獲取此實例所表示的日期為該月中的第幾天。
DayOfWeek 獲取此實例所表示的日期是星期幾。
DayOfYear 獲取此實例所表示的日期是該年中的第幾天。
Hour 獲取此實例所表示日期的小時部分。
Kind 獲取一個值,該值指示由此實例表示的時間是基於本地時間、協調世界時 (UTC),還是兩者皆否。
Millisecond 獲取此實例所表示日期的毫秒部分。
Minute 獲取此實例所表示日期的分鍾部分。
Month 獲取此實例所表示日期的月份部分。
Now 靜態,獲取一個 DateTime 對象,該對象設置為此計算機上的當前日期和時間,表示為本地時間。
Second 獲取此實例所表示日期的秒部分。
Ticks 獲取表示此實例的日期和時間的計時周期數。
TimeOfDay 獲取此實例的當天的時間。
Today 靜態,獲取當前日期。
UtcNow 靜態,獲取一個 DateTime 對象,該對象設置為此計算機上的當前日期和時間,表示為協調世界時 (UTC)。
Year 獲取此實例所表示日期的年份部分。
static void Main(string[] args) { Console.WriteLine(DateTime.MaxValue); //輸出 9999/12/31 23:59:59 Console.WriteLine(DateTime.MinValue); //輸出 0001/1/1 0:00:00 DateTime dt = DateTime.Now; //獲取當前時間 Console.WriteLine(dt); //輸出 2013/3/2 12:47:12 DateTime dt1 = DateTime.Today; //獲取當前日期 Console.WriteLine(dt1); //輸出 2013/3/2 0:00:00 DateTime dt2 = DateTime.UtcNow; //獲取國際標准時間 Console.WriteLine(dt2); //輸出 2013/3/2 4:50:14 Console.WriteLine(dt.Date); //輸出 2013/3/2 0:00:00 DateTime的日期部分 Console.WriteLine(dt.Day); //輸出 2 一個月的第幾天,也就是今天是幾號 Console.WriteLine(dt.DayOfWeek); //輸出 Saturday 星期幾 Console.WriteLine(dt.DayOfYear); //輸出 61 今天是該年中的第幾天 Console.WriteLine(dt.Hour); //輸出 12 現在是幾點 Console.WriteLine(dt.Kind); //輸出 Local 指示此實例表示的時間是基於本地時間、協調世界時 (UTC),還是兩者皆否。 Console.WriteLine(dt.Millisecond); //輸出 720 毫秒部分 Console.WriteLine(dt.Minute); //輸出 57 分鍾部分 Console.WriteLine(dt.Month); //輸出 3 月份 Console.WriteLine(dt.Second); //輸出 27 秒數 Console.WriteLine(dt.Ticks); //輸出 634978260185598529 Console.WriteLine(dt.TimeOfDay); //輸出 13:01:47.3999343 Console.WriteLine(dt.Year); //輸出 2013 Console.ReadKey(); }
三、方法
Add 將指定的 TimeSpan 的值加到此實例的值上。
AddDays 將指定的天數加到此實例的值上。
AddHours 將指定的小時數加到此實例的值上。
AddMilliseconds 將指定的毫秒數加到此實例的值上。
AddMinutes 將指定的分鍾數加到此實例的值上。
AddMonths 將指定的月份數加到此實例的值上。
AddSeconds 將指定的秒數加到此實例的值上。
AddTicks 將指定的計時周期數加到此實例的值上。
AddYears 將指定的年份數加到此實例的值上。
Compare 對兩個 DateTime 的實例進行比較,並返回一個指示第一個實例是早於、等於還是晚於第二個實例的整數。
CompareTo 已重載。 將此實例的值與指定的 DateTime 值相比較,並指示此實例是早於、等於還是晚於指定的 DateTime 值。
DaysInMonth 返回指定年和月中的天數。
Equals 已重載。 返回一個值,該值指示兩個 DateTime 對象,或者一個 DateTime 實例和另一個對象或 DateTime 是否相等。
FromBinary 反序列化一個 64 位二進制值,並重新創建序列化的 DateTime 初始對象。
FromFileTime 將指定的 Windows 文件時間轉換為等效的本地時間。
FromFileTimeUtc 將指定的 Windows 文件時間轉換為等效的 UTC 時間。
FromOADate 返回與指定的 OLE 自動化日期等效的 DateTime。
GetDateTimeFormats 已重載。 將此實例的值轉換為標准 DateTime 格式說明符支持的所有字符串表示形式。
GetHashCode 返回此實例的哈希代碼。 (重寫 ValueType..::.GetHashCode()()()。)
GetTypeCode 返回值類型 DateTime 的 TypeCode。
IsDaylightSavingTime 指示此 DateTime 實例是否在當前時區的夏時制范圍內。
IsLeapYear 返回指定的年份是否為閏年的指示。
Parse 已重載。 將日期和時間的指定字符串表示形式轉換為其等效的 DateTime。
ParseExact 已重載。 將日期和時間的指定字符串表示形式轉換為其等效的 DateTime。字符串表示形式的格式必須與指定的格式完全匹配,否則會引發異常。
SpecifyKind 創建新的 DateTime 對象,該對象表示與指定的 DateTime 相同的時間,但是根據指定的 DateTimeKind 值的指示,指定為本地時間或協調世 界時 (UTC),或者兩者皆否。
Subtract 已重載。 從此實例中減去指定的時間或持續時間。
ToBinary 將當前 DateTime 對象序列化為一個 64 位二進制值,該值隨后可用於重新創建 DateTime 對象。
ToFileTime 將當前 DateTime 對象的值轉換為 Windows 文件時間。
ToFileTimeUtc 將當前 DateTime 對象的值轉換為 Windows 文件時間。
ToLocalTime 將當前 DateTime 對象的值轉換為本地時間。
ToLongDateString 將當前 DateTime 對象的值轉換為其等效的長日期字符串表示形式。
ToLongTimeString 將當前 DateTime 對象的值轉換為其等效的長時間字符串表示形式。
ToOADate 將此實例的值轉換為等效的 OLE 自動化日期。
ToShortDateString 將當前 DateTime 對象的值轉換為其等效的短日期字符串表示形式。
ToShortTimeString 將當前 DateTime 對象的值轉換為其等效的短時間字符串表示形式。
ToString 已重載。 將當前 DateTime 對象的值轉換為其等效的字符串表示形式。
ToUniversalTime 將當前 DateTime 對象的值轉換為協調世界時 (UTC)。
TryParse 已重載。 將日期和時間的指定字符串表示形式轉換為其 DateTime 等效項,並返回一個指示轉換是否成功的值。
TryParseExact 已重載。 將日期和時間的指定字符串表示形式轉換為其等效的 DateTime。字符串表示形式的格式必須與指定的格式完全匹配。該方法返回一 個指示轉換是否成功的值。
示例:
static void Main(string[] args) { DateTime dt = DateTime.Now; // 2013/3/2 13:13:27 DateTime dt1 = dt.AddDays(10); Console.WriteLine(dt1); // 2013/3/12 13:13:27 //留意到新的日期已經加了10天 DateTime dt2 = dt.AddHours(10); Console.WriteLine(dt2); // 2013/3/2 23:13:27 //留意到新的日期已經加了10天 DateTime dt3 = dt.AddHours(12); //加多兩個小時,讓它超過24 Console.WriteLine(dt3); // 2013/3/3 1:13:27 //留到會自動增加一天 //下面5個都是類似 //AddMilliseconds 將指定的毫秒數加到此實例的值上。 //AddMinutes 將指定的分鍾數加到此實例的值上。 //AddMonths 將指定的月份數加到此實例的值上。 //AddSeconds 將指定的秒數加到此實例的值上。 //AddYears 將指定的年份數加到此實例的值上。 DateTime dt4 = dt.AddDays(1); int i = DateTime.Compare(dt,dt4); //第一個參數 早於 -1 等於 0 晚於1 第二個參數 靜態版 Console.WriteLine(i); //輸出 -1 int j = dt.CompareTo(dt4); //調用者比參數早 -1 等0 晚 1 Console.WriteLine(j); // 輸出 -1 int days = DateTime.DaysInMonth(2011,2); //某年某月有多少天 Console.WriteLine(days); // 輸出 28 long FTime = dt.ToFileTime(); Console.WriteLine(FTime); //輸出 130066782813286694 windows文件時間 DateTime dt5 = DateTime.FromFileTime(130066782813286694); //windows文件時間轉回DateTime Console.WriteLine(dt5); //輸出 2013/3/2 14:11:21 //以下幾個都是類似的,不再多寫 //FromBinary 反序列化一個 64 位二進制值,並重新創建序列化的 DateTime 初始對象。 //FromFileTimeUtc 將指定的 Windows 文件時間轉換為等效的 UTC 時間。 //FromOADate 返回與指定的 OLE 自動化日期等效的 DateTime。 //ToBinary 將當前 DateTime 對象序列化為一個 64 位二進制值,該值隨后可用於重新創建 DateTime 對象。 //ToFileTimeUtc 將當前 DateTime 對象的值轉換為 Windows 文件時間。 //ToOADate 將此實例的值轉換為等效的 OLE 自動化日期。 DateTime dt6 = dt.ToLocalTime(); Console.WriteLine(dt6); //本來就是本地時間 Console.WriteLine(dt.ToLongDateString()); //輸出 2013年3月2日 短日期字符串表示形式 Console.WriteLine(dt.ToLongTimeString()); //輸出 14:52:33 短時間字符串表示形式 Console.WriteLine(dt.IsDaylightSavingTime()); //False DateTime實例是否在當前時區的夏時制范圍內 Console.WriteLine(DateTime.IsLeapYear(2013)); //False 是否是閏年 string str = "2012-12-12"; DateTime dt7 = DateTime.Parse(str); //此轉換方法如果轉換不成功會報錯 Console.WriteLine(dt7); //輸出 2012/12/12 0:00:00 DateTime dt8; DateTime.TryParse(str,out dt8); //此方法的好處是,轉換不成功也不會報錯 Console.WriteLine(dt8); //輸出 2012/12/12 0:00:00 string dateTimeString = "2008年09月12日 15點14分56秒"; DateTime dt9 = DateTime.ParseExact(dateTimeString, "yyyy年MM月dd日 HH點mm分ss秒", null); //按照指定的格式來轉換為一個時間對象,這方法不錯 Console.WriteLine(dt9); //輸出 2008/9/12 15:14:56 DateTime dt10; DateTime.TryParseExact(dateTimeString, "yyyy年MM月dd日 HH點mm分ss秒",null,System.Globalization.DateTimeStyles.None,out dt10); //按照指定的格式來轉換為一個時間對象,這方法不錯 Console.WriteLine(dt10); //輸出 2008/9/12 15:14:56 Console.WriteLine(dt.ToUniversalTime()); //輸出 2013/3/2 7:12:26 轉換為國際時間 //yyyyMMdd hhmmss Console.WriteLine(dt.GetDateTimeFormats('s')[0].ToString()); //輸出 2013-03-02T15:25:26 Console.WriteLine(dt.GetDateTimeFormats('t')[0].ToString()); //輸出 15:18 Console.WriteLine(dt.GetDateTimeFormats('y')[0].ToString()); //輸出 2013年3月 Console.WriteLine(dt.GetDateTimeFormats('D')[0].ToString()); //輸出 2013年3月2日 Console.WriteLine(dt.GetDateTimeFormats('D')[1].ToString()); //輸出 2013年3月2日 ,星期六 Console.WriteLine(dt.GetDateTimeFormats('D')[2].ToString()); //輸出 星期六,2013年3月2日 Console.WriteLine(dt.GetDateTimeFormats('M')[0].ToString()); //輸出 3月2日 Console.WriteLine(dt.GetDateTimeFormats('f')[0].ToString()); //輸出 2013年3月2日 15:36 Console.WriteLine(dt.GetDateTimeFormats('g')[0].ToString()); //輸出 2013/3/2 15:36 Console.WriteLine(dt.GetDateTimeFormats('r')[0].ToString()); //輸出 Sat, 02 Mar 2013 15:28:10 GTM Console.WriteLine(dt.ToString("yyyy*MM*dd")); //輸出2013*03*02 ToString()方法被重寫了 TypeCode c = dt.GetTypeCode(); Console.WriteLine(c.ToString()); //輸出 DateTime DateTime dt11 = DateTime.SpecifyKind(dt, DateTimeKind.Local); //根據一個DateTime創建一個新的時間,枚舉指定類型本地時間或協調世界時 (UTC),或者兩者皆否。 Console.WriteLine(dt11); //輸出 2013/3/2 15:32:33 //DateTime dt12 = dt.AddTicks(1000000000 * 60); //100納秒為單位 //Console.WriteLine(dt12); DateTime dt13 = DateTime.Now.AddDays(10); TimeSpan ts = dt13.Subtract(dt); Console.WriteLine(ts); //輸出 10.00:00:00...... TimeSpan ts1 = new TimeSpan(1,0,0,0); //創建一個TimeSpan對象,1天0時0分0秒 DateTime dt14 = dt.Add(ts1); Console.WriteLine(dt14); //輸出 2013/3/3 15:32:33 留意到日期里多了一天 DateTime dt15 = dt.Subtract(ts1); Console.WriteLine(dt15); //輸出 2013/3/1 15:32:33 留意到日期少了一天 Console.ReadKey(); }
四、實例,計算兩個時間差
下面給出根據兩個DateTime計算時間差的實例:
DateTime dt = DateTime.Now(); TimeSpan ts = new TimeSpan(dt.Ticks); TimeSpan tsLast = new TimeSpan(dtLast.Ticks); TimeSpan tsDisparity = ts.Subtract(tsLast).Duration();