优秀的编程知识分享平台

网站首页 > 技术文章 正文

C#基础 DateTime详解(c# datetime.date)

nanyue 2024-09-11 05:30:51 技术文章 15 ℃


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:根据年份判断生肖

GetSexagenaryYear方法

ChineseLunisolarCalendar对象的GetSexagenaryYear方法用于计算与指定日期对象的甲子(60)年循环中的年。

语法:public virtual int GetSexagenaryYear(DateTime time)

Time:datetime对象,表示要读取的时间信息。

Int:返回整型数值,表示甲子循环中的一个从1-60的数字,它与date参数对应。

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表达式

{

while (true)//无限循环

{

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();//线程开始执行

}

Tags:

最近发表
标签列表