.Net時間運算 - DateTime類,TimeSpan類


  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();

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM