天天看點

C#基礎——DateTime

格式 輸出 示例

y 7 string yy = DateTime.Now.ToString("y-MM")

yy="7-05"

yy 07 string yy = DateTime.Now.ToString("yy-MM")

yy="07-05"

yyy或更多的y 1984 string yy = DateTime.Now.ToString("yyyy");

yy="2007"

M 5. string mon = DateTime.Parse("1984-05-09")ToString("yyyy-M")

mon = "1984-5"

MM 05. string mon = DateTime.Parse("1984-05-09")ToString("MM")

mon = "05"

MMM 如果是中文版的作業系統,則會輸出:五月.

如果是英文作業系統,則輸入月份前三個字母的簡寫:May string mon = DateTime.Parse("2006-07-01").ToString("MMM")

英文版作業系統:Jul

中文版作業系統:七月

MMMM或更多的M 如果是中文版的作業系統,則會輸出:五月.

如果是英文作業系統,則輸入月份的全寫 string mon = DateTime.Parse("2006-07-01").ToString("MMM")

英文版作業系統:July

日期或星期

d 9 string dd= DateTime.Parse("1984-05-09")ToString("d")

dd= "9"

dd 09 string dd= DateTime.Parse("1984-05-09")ToString("dd")

dd= "09"

ddd 如果是中文版的作業系統,則會輸出星期,如星期三。.

如果是英文作業系統,則輸出星期的簡寫:如

Wed string dd = DateTime.Parse("2006-07-01").ToString("ddd")

英文版作業系統:Wed

中文版作業系統:星期三

dddd或更多的d 如果是中文版的作業系統,則會輸出星期,如星期三。.

如果是英文作業系統,則輸出星期:如

Wednesday string dd = DateTime.Parse("2006-07-01").ToString("dddd")

英文版作業系統:Wednesday

小時

h 小時範圍:1-12 string hh = DateTime.Now.ToString(“h”);

hh = 8

hh或更多的h 小時範圍:1-12 string hh = DateTime.Now.ToString(“hh”);

hh = 08

H 小時範圍:0-23 string hh = DateTime.Now.ToString(“yyyy-H”);

hh = 2006-8

HH或更多的H 小時範圍:0-23 string hh = DateTime.Now.ToString(“yyyy-HH”);

hh = 2006-08

string hh = DateTime.Pare(“2006-7-4 18:00:00”).ToString(“yyyy-HH”);

hh = 2006-18

分鐘

m 6 string mm = DateTime.Now.ToString("yyyy-MM-dd-m");

mm = “2006-07-01-6”;

mm或更多的m 06 string mm = DateTime.Now.ToString("yyyy-MM-dd-mm");

mm = “2006-07-01-06”;

s 6 string mm = DateTime.Now.ToString("yyyy-MM-dd-s");

ss或更多的s 06 string mm = DateTime.Now.ToString("yyyy-MM-dd-ss");

y代表年份,注意是小寫的y,大寫的Y并不代表年份。

2. M表示月份。

3. d表示日期,注意D并不代表什麼。

4. h或H表示小時,h用的是12小時制,H用的是24小時制。

5. m表示分鐘。

6. s表示秒。注意S并不代表什麼。

舉例:DateTime dt = DateTime.Now;

1. dt.ToString();//2005-11-5 13:21:25

2. dt.ToFileTime().ToString();//127756416859912816

3. dt.ToFileTimeUtc().ToString();//127756704859912816

4. dt.ToLocalTime().ToString();//2005-11-5 21:21:25

5. dt.ToLongDateString().ToString();//2005年11月5日

6. dt.ToLongTimeString().ToString();//13:21:25

7. dt.ToOADate().ToString();//38661.5565508218

8. dt.ToShortDateString().ToString();//2005-11-5

9. dt.ToShortTimeString().ToString();//13:21

10. dt.ToUniversalTime().ToString();//2005-11-5 5:21:25

11. dt.Year.ToString();//2005

12. dt.Date.ToString();//2005-11-5 0:00:00

13. dt.DayOfWeek.ToString();//Saturday

14. dt.DayOfYear.ToString();//309

15. dt.Hour.ToString();//13

16. dt.Millisecond.ToString();//441

17. dt.Minute.ToString();//30

18. dt.Month.ToString();//11

19. dt.Second.ToString();//28

20. dt.Ticks.ToString();//632667942284412864

21. dt.TimeOfDay.ToString();//13:30:28.4412864

22. dt.ToString();//2005-11-5 13:47:04

23. dt.AddYears(1).ToString();//2006-11-5 13:47:04

24. dt.AddDays(1.1).ToString();//2005-11-6 16:11:04

25. dt.AddHours(1.1).ToString();//2005-11-5 14:53:04

26. dt.AddMilliseconds(1.1).ToString();//2005-11-5 13:47:04

27. dt.AddMonths(1).ToString();//2005-12-5 13:47:04

28. dt.AddSeconds(1.1).ToString();//2005-11-5 13:47:05

29. dt.AddMinutes(1.1).ToString();//2005-11-5 13:48:10

30. dt.AddTicks(1000).ToString();//2005-11-5 13:47:04

31. dt.CompareTo(dt).ToString();//0

32. dt.Add(?).ToString();//問号為一個時間段

33. dt.Equals("2005-11-6 16:11:04").ToString();//False

34. dt.Equals(dt).ToString();//True

35. dt.GetHashCode().ToString();//1474088234

36. dt.GetType().ToString();//System.DateTime

37. dt.GetTypeCode().ToString();//DateTime

38. dt.GetDateTimeFormats('s')[0].ToString();//2005-11-05T14:06:25

39. dt.GetDateTimeFormats('t')[0].ToString();//14:06

40. dt.GetDateTimeFormats('y')[0].ToString();//2005年11月

41. dt.GetDateTimeFormats('D')[0].ToString();//2005年11月5日

42. dt.GetDateTimeFormats('D')[1].ToString();//2005 11 05

43. dt.GetDateTimeFormats('D')[2].ToString();//星期六 2005 11 05

44. dt.GetDateTimeFormats('D')[3].ToString();//星期六 2005年11月5日

45. dt.GetDateTimeFormats('M')[0].ToString();//11月5日

46. dt.GetDateTimeFormats('f')[0].ToString();//2005年11月5日 14:06

47. dt.GetDateTimeFormats('g')[0].ToString();//2005-11-5 14:06

48. dt.GetDateTimeFormats('r')[0].ToString();//Sat, 05 Nov 2005 14:06:25 GMT

49. string.Format("{0:d}",dt);//2005-11-5

50. string.Format("{0:D}",dt);//2005年11月5日

51. string.Format("{0:f}",dt);//2005年11月5日 14:23

52. string.Format("{0:F}",dt);//2005年11月5日 14:23:23

53. string.Format("{0:g}",dt);//2005-11-5 14:23

54. string.Format("{0:G}",dt);//2005-11-5 14:23:23

55. string.Format("{0:M}",dt);//11月5日

56. string.Format("{0:R}",dt);//Sat, 05 Nov 2005 14:23:23 GMT

57. string.Format("{0:s}",dt);//2005-11-05T14:23:23

58. string.Format("{0:t}",dt);//14:23

59. string.Format("{0:T}",dt);//14:23:23

60. string.Format("{0:u}",dt);//2005-11-05 14:23:23Z

61. string.Format("{0:U}",dt);//2005年11月5日 6:23:23

TimeSpan的方法:

Add:與另一個TimeSpan值相加。

Days:傳回用天數計算的TimeSpan值。

Duration:擷取TimeSpan的絕對值。

Hours:傳回用小時計算的TimeSpan值

Milliseconds:傳回用毫秒計算的TimeSpan值。

Minutes:傳回用分鐘計算的TimeSpan值。

Negate:傳回目前執行個體的相反數。

Seconds:傳回用秒計算的TimeSpan值。

Subtract:從中減去另一個TimeSpan值。

Ticks:傳回TimeSpan值的tick數。

TotalDays:傳回TimeSpan值表示的天數。

TotalHours:傳回TimeSpan值表示的小時數。

TotalMilliseconds:傳回TimeSpan值表示的毫秒數。

TotalMinutes:傳回TimeSpan值表示的分鐘數。

TotalSeconds:傳回TimeSpan值表示的秒數。

FromDays 傳回表示指定天數的TimeSpan,其中對天數的指定精确到最接近的毫秒。

FromHours 傳回表示指定小時數的TimeSpan,其中對小時數的指定精确到最接近的毫秒。

FromMilliseconds 傳回表示指定毫秒數的TimeSpan。

FromMinutes 傳回表示指定分鐘數的TimeSpan,其中對分鐘數的指定精确到最接近的毫秒。

FromSeconds 傳回表示指定秒數的TimeSpan,其中對秒數的指定精确到最接近的毫秒。

TimeSpan( 10, 20, 30, 40, 50 ) 10.20:30:40.0500000

TimeSpan( 1111, 2222, 3333, 4444, 5555 ) 1205.22:47:09.5550000

TimeSpan (Int32, Int32, Int32) 将新的 TimeSpan 初始化為指定的小時數、分鐘數和秒數。

TimeSpan (Int32, Int32, Int32, Int32) 将新的 TimeSpan 初始化為指定的天數、小時數、分鐘數和秒數。

TimeSpan (Int32, Int32, Int32, Int32, Int32) 将新的 TimeSpan 初始化為指定的天數、小時數、分鐘數、秒數和毫秒數。

ASP.NET 中,兩個時間相減,得到一個 TimeSpan 執行個體,TimeSpan 有一些屬性:Days、TotalDays、Hours、TotalHours、Minutes、TotalMinutes、Seconds、TotalSeconds、Ticks,注意沒有 TotalTicks。

Tick 是一個計時周期,表示一百納秒,即一千萬分之一秒。

TotalDays 就是把 Ticks 換算成日數。

TotalHours 就是把 Ticks 換算成小時數。

TotalMinutes 就是把 Ticks 換算成分鐘數。TotalSeconds 就是把 Ticks 換算成秒數。

負數:上面是較晚的日期減較早的日期,是以各屬性值為正數,如果是較早的日期減較晚的日期,則屬性值為負數。

例1:計算兩個時間的內插補點:

string dateDiff = null;

           DateTime d1=DateTime.Now;

           DateTime d2=DateTime.Now.AddTicks(12998898989776);

           TimeSpan ts1 = new TimeSpan(d1.Ticks);

           TimeSpan ts2 = new TimeSpan(d2.Ticks);

           TimeSpan ts = ts1.Subtract(ts2).Duration();

           dateDiff = ts.Days.ToString() + "天" + ts.Hours.ToString() + "時" + ts.Minutes.ToString()+"分"+ts.Seconds.ToString()+"秒";

           Console.WriteLine(dateDiff);

例2:FromDays用法

           TimeSpan t1 = TimeSpan.FromDays(0.3);

           Console.WriteLine(t1.Hours.ToString()); 輸出結果:7

例3:如何确定程式的運作時間?

 public partial class Frm_Main : Form

   {

       public Frm_Main()

       {

           InitializeComponent();

       }

       private DateTime G_DateTime;//聲明時間字段

       private void Frm_Main_Load(object sender, EventArgs e)

           G_DateTime = DateTime.Now;//得到系統目前時間

           Thread P_th = new Thread(//建立線程

               () =>//使用Lambda表達式

               {

                   while (true)//無限循環

                   {

                       TimeSpan P_TimeSpan =//得到時間差

                           DateTime.Now - G_DateTime;

                       Invoke(//調用窗體線程

                           (MethodInvoker)(() =>//使用Lambda表達式

                           {//顯示程式啟動時間

tssLabel_Time.Text =string.Format("系統已經運作: {0}天{1}小時{2}分{3}秒",

                                   P_TimeSpan.Days, P_TimeSpan.Hours,

                                   P_TimeSpan.Minutes, P_TimeSpan.Seconds);

                           }));

                       Thread.Sleep(1000);//線程挂起1秒鐘

                   }

               });

           P_th.IsBackground = true;//設定為背景線程

           P_th.Start();//開始執行線程

}

例4:根據年份判斷生肖

○1 GetSexagenaryYear方法

  ChineseLunisolarCalendar對象的GetSexagenaryYear方法用于計算與指定日期對象的甲子(60)年循環中的年。

文法:public virtual int GetSexagenaryYear(DateTime time)

   Time:datetime對象,表示要讀取的時間資訊。

   Int:傳回整型數值,表示甲子循環中的一個從1-60的數字,它與date參數對應。

○2 GetTerrestrialBranch方法:

 ChineseLunisolarCalendar對象的GetTerrestrialBranch方法用于計算甲子(60年)循環中指定的地支。文法如下:

Public int GetTerrestrialBranch(int sexage)

參數說明:sexage :整型數值,方法接受一個從1-60的整形參數,表示甲子循環中的一年

傳回值: int類型,表示一個從1-12的整數。

private void btn_Get_Click(object sender, EventArgs e)

  {建立月曆對象

     System.Globalization.ChineseLunisolarCalendar

chinseCaleander = new System.Globalization.ChineseLunisolarCalendar();

     string TreeYear = "鼠牛虎兔龍蛇馬羊猴雞狗豬";//建立字元串對象

      int intYear = chinseCaleander.GetSexagenaryYear(DateTime.Now);//計算年資訊

      string Tree=TreeYear.Substring(chinseCaleander.       GetTerrestrialBranch(intYear) - 1, 1); //輸出生肖資訊

      MessageBox.Show("今年是十二生肖" + Tree + "年","判斷十二生肖", MessageBoxButtons.OK,MessageBoxIcon.Information);

例5、判斷是否是閏年?

用IsLeapYear。

bool b= DateTime.IsLeapYear(int.Parse(DateTime.Now.ToString(“yyyy”));

注:計算閏年的方法:指定的年份能被400整除為閏年。或者指定的年份可以整除4但不能整除100也為閏年。

例6、擷取一個月中的天數:用DaysInMonth

 int count=DateTime.DaysInMonth(DateTime.Now.Year,DateTime.Now.Month);

DaysInMonth方法接受兩個整數,分别是計算天數指定的年份和月份。

例7、日期時間格式處理,動态獲得目前的時間

 private void Frm_Main_Load(object sender, EventArgs e)

           System.Threading.Thread P_thread = //建立線程

               new System.Threading.Thread(

               () =>//使用lambda表達式

                       this.Invoke(//操作窗體線程

                             (MethodInvoker)delegate()//使用匿名方法

                                    {

                                        this.Refresh();//重新整理窗體

                                        Graphics P_Graphics = //建立繪圖對象

                                            CreateGraphics();

                                        P_Graphics.DrawString("系統時間:" +//在窗體中繪出系統時間

                                            DateTime.Now.ToString(

                                            "yyyy年MM月dd日 HH時mm分ss秒"),

                                            new Font("宋體", 15),

                                            Brushes.Blue,

                                            new Point(10, 10));

                                    });

                       System.Threading.Thread.Sleep(1000);//線程挂起1秒鐘

           P_thread.IsBackground = true;//将線程設定為背景線程

           P_thread.Start();//線程開始執行

繼續閱讀