【C#】日期与时间

【C#】日期与时间

关于时间名词

格里高利历(公元):例如2024年就是公元元年算起的两千零二十四年
格林尼治时间(GMT):时间以伦敦本初子午线作为起始作为标准进行计算
协调世界时(UTC):通过加入闰秒抵消地球自转的影响优化GMT,更准确计算时间

DateTime日期结构体

DateTime 对象默认值和最小值 是 0001年01月01日 00:00:00 (午夜)
DateTime 对象最大值是 9999年12月31日 23:59:59
在这里插入图片描述

DateTime dt = new DateTime(1970, 1, 1, 1, 1, 1, 100);
Debug.Log(dt.Year + "-" + dt.Month + "-" + dt.Day + " " + dt.Hour + ":" + dt.Minute + ":" + dt.Second + ":" + dt.Millisecond);//输出1970-1-1 1:1:1:100
Debug.Log(dt.Ticks);//输出621356004611000000
Debug.Log($"一年的第{dt.DayOfYear}天");//输出:一年的第1天
Debug.Log($"每周 {dt.DayOfWeek}");//输出:每周 Thursday

1. 获取时间

DateTime nowTime = DateTime.Now;
Debug.Log(nowTime.Year + "-" + nowTime.Month + "-" + nowTime.Day + " " + nowTime.Hour + ":" + nowTime.Minute + ":" + nowTime.Second + ":" + nowTime.Millisecond);
//输出2024-5-16 10:4:57:952

DateTime nowTime2 = DateTime.Today;
Debug.Log(nowTime2.Year + "-" + nowTime2.Month + "-" + nowTime2.Day + " " + nowTime2.Hour + ":" + nowTime2.Minute + ":" + nowTime2.Second + ":" + nowTime2.Millisecond);
//输出2024-5-16 0:0:0:0

DateTime nowTimeUTC = DateTime.UtcNow;
Debug.Log(nowTimeUTC.Year + "-" + nowTimeUTC.Month + "-" + nowTimeUTC.Day + " " + nowTimeUTC.Hour + ":" + nowTimeUTC.Minute + ":" + nowTimeUTC.Second + ":" + nowTimeUTC.Millisecond);
//输出2024-5-16 2:4:57:952

2. 计算展示时间

DateTime nowTime3 = DateTime.Now.AddDays(-1);//前一天
Debug.Log(nowTime3.Day);//输出15
Debug.Log(nowTime3);//输出05/15/2024 14:43:28
Debug.Log(nowTime3.ToString());//输出2024/5/15 14:43:28
Debug.Log(nowTime3.ToShortTimeString());//输出14:43
Debug.Log(nowTime3.ToShortDateString());//输出2024/5/15
Debug.Log(nowTime3.ToLongTimeString());//输出14:43:28
Debug.Log(nowTime3.ToLongDateString());//输出2024年5月15日

Debug.Log("[d]" + nowTime3.ToString("d"));//输出[d]2024/5/15
Debug.Log("[D]" + nowTime3.ToString("D"));//输出[D]2024年5月15日

Debug.Log("[f]" + nowTime3.ToString("f"));//输出[f]2024年5月15日 14:43
Debug.Log("[F]" + nowTime3.ToString("F"));//输出[F]2024年5月15日 14:43:28

Debug.Log("[g]" + nowTime3.ToString("g"));//输出[g]2024/5/15 14:43
Debug.Log("[G]" + nowTime3.ToString("G"));//输出[G]2024/5/15 14:43:28

Debug.Log("[t]" + nowTime3.ToString("t"));//输出[t]14:43
Debug.Log("[T]" + nowTime3.ToString("T"));//输出[T]14:43:28

Debug.Log("[u]" + nowTime3.ToString("u"));//输出[u]2024-05-15 14:43:28Z
Debug.Log("[U]" + nowTime3.ToString("U"));//输出[U]2024年5月15日 6:43:28

Debug.Log("[m]" + nowTime3.ToString("m"));//输出[m]5月15日
Debug.Log("[M]" + nowTime3.ToString("M"));//输出[M]5月15日

Debug.Log("[r]" + nowTime3.ToString("r"));//输出[r]Wed, 15 May 2024 14:43:28 GMT
Debug.Log("[R]" + nowTime3.ToString("R"));//输出[R]Wed, 15 May 2024 14:43:28 GMT

Debug.Log("[y]" + nowTime3.ToString("y"));//输出[y]2024年5月
Debug.Log("[Y]" + nowTime3.ToString("Y"));//输出[Y]2024年5月

Debug.Log("[o]" + nowTime3.ToString("O"));//输出[o]2024-05-15T14:43:28.7040747+08:00
Debug.Log("[O]" + nowTime3.ToString("O"));//输出[O]2024-05-15T14:43:28.7040747+08:00

Debug.Log("[s]" + nowTime3.ToString("s"));//输出[s]2024-05-15T14:43:28

//年
Debug.Log("[yy]" + nowTime3.ToString("yy"));//输出[yy]24
Debug.Log("[yyyy]" + nowTime3.ToString("yyyy"));//输出[yyyy]2024

//月
Debug.Log("[MM]" + nowTime3.ToString("MM"));//输出[MM]05

//天
Debug.Log("[dd]" + nowTime3.ToString("dd"));//输出[dd]15
Debug.Log("[ddd]" + nowTime3.ToString("ddd"));//输出[ddd]周三
Debug.Log("[dddd]" + nowTime3.ToString("dddd"));//输出[dddd]星期三

//时
Debug.Log("[hh]" + nowTime3.ToString("hh"));//输出[hh]02
Debug.Log("[HH]" + nowTime3.ToString("HH"));//输出[HH]14

//分
Debug.Log("[mm]" + nowTime3.ToString("mm"));//输出[mm]43

//秒
Debug.Log("[ss]" + nowTime3.ToString("ss"));//输出[ss]28

//毫秒
Debug.Log("[ff]" + nowTime3.ToString("ff"));//输出[ff]70
Debug.Log("[fff]" + nowTime3.ToString("fff"));//输出[fff]704
Debug.Log("[ffff]" + nowTime3.ToString("ffff"));//输出[ffff]7040

//混合使用可以包含 - / 等非关键字符
Debug.Log(nowTime3.ToString("yyyy-MM-dd-dddd HH:mm:ss"));//输出2024-05-15-星期三 14:43:28

3. 字符串转换成时间

//string str = nowTime.ToString();//2024/05/16 14:50:23
//string str = nowTime.ToString("yyyy-MM-dd-dddd HH:mm:ss");//转换失败 格式要求:最基本的toString才能转回去
string str = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");//√符合转换格式 2024/05/16 14:50:23
Debug.Log(str);//2024/05/16 14:50:23
DateTime dt3;
if(DateTime.TryParse(str, out dt3))
{
    Debug.Log(dt3);//输出05/16/2024 14:50:23
}

TimeSpan日期跨度结构体

时间戳通过两个DateTime对象相减获取该对象。
在这里插入图片描述

1. 时间间隔

TimeSpan ts = DateTime.Now - new DateTime(2024, 5, 15);
Debug.Log(ts.TotalDays);//输出1.62589249840509
Debug.Log(ts.TotalHours);//输出39.0214199617222
Debug.Log(ts.TotalMinutes);//输出2341.28519770333
Debug.Log(ts.TotalSeconds);//输出140477.1118622
Debug.Log(ts.Ticks);//输出1404771118622

Debug.Log(ts.Days + " " + ts.Hours + ":" + ts.Minutes + ":" + ts.Seconds + ":" + ts.Milliseconds);
//输出1 15:1:17:111

2.相互计算

TimeSpan ts2 = new TimeSpan(1, 0, 0, 0);
TimeSpan ts3 = new TimeSpan(0, 9, 9, 5);
TimeSpan ts4 = ts2 + ts3;
Debug.Log(ts4.Days + " " + ts4.Hours + ":" + ts4.Minutes + ":" + ts4.Seconds);//输出1 9:9:5

3.Ticks换算换算

在这里插入图片描述

TimeSpan ts4 = new TimeSpan(1, 0, 0, 0);
Debug.Log(ts4.Ticks);//输出864000000000
Debug.Log(ts4.Ticks / TimeSpan.TicksPerSecond);//86400  86400/3600=24小时=1天

因为作者精力有限,文章中难免出现一些错漏,敬请广大专家和网友批评、指正。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值