C#基础 DateTime详解 c#中datetime
liebian365 2024-11-04 14:30 18 浏览 0 评论
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();//线程开始执行
}
相关推荐
- 4万多吨豪华游轮遇险 竟是因为这个原因……
-
(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...
- “菜鸟黑客”必用兵器之“渗透测试篇二”
-
"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...
- 科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白
-
作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...
- 麦子陪你做作业(二):KEGG通路数据库的正确打开姿势
-
作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...
- 知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势
-
智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...
- 每日新闻播报(September 14)_每日新闻播报英文
-
AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...
- 香港新巴城巴开放实时到站数据 供科技界研发使用
-
中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...
- 5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper
-
本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...
- Qt动画效果展示_qt显示图片
-
今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...
- 如何从0到1设计实现一门自己的脚本语言
-
作者:dong...
- 三年级语文上册 仿写句子 需要的直接下载打印吧
-
描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...
- C++|那些一看就很简洁、优雅、经典的小代码段
-
目录0等概率随机洗牌:1大小写转换2字符串复制...
- 二年级上册语文必考句子仿写,家长打印,孩子照着练
-
二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)