日期和时间(Time)
时间转换
- 1s秒 = 1000ms毫秒
- 1ms毫秒 = 1000μs微妙
- 1μs微妙 = 1000ns纳秒
格里高利历
格里高利历一般指公元
公元,即公历纪年法
目前我们所说公历,就是格里高利历
2022年就是从公元元年开始算起的两千二十二年
格林尼治时间(GMT)
格林尼治标准时间
是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线
地球每天的自转是有些不规则的,而且正在缓慢减速
所以,格林尼治时间已经不再被作为标准时间使用
现在的标准时间──协调世界时(UTC)
协调世界时(UTC):
又称世界统一时间、世界标准时间、国际协调时间
UTC协调世界时即格林尼治平太阳时间,是指格林尼治所在地的标准时间,
也是表示地球自转速率的一种形式
UTC基于国际原子时间,通过不规则的加入闰秒来抵消地球自转变慢的影响,是世界上调节时钟和时间的主要时间标准
时间戳
从1970年1月1日(UNIX时间戳的起点时间)到现在的时间
计算机时间和众多的编程语言的时间都是从1970年1月1日开始算起
是因为很多编程语言起源于UNIX系统,而UNIX系统认为1970年1月1日0点是时间纪元
所以我们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的
DateTime
命名空间:System
DateTime 是 C# 提供给我们处理日期和时间的结构体
对象的默认值和最小值是0001年1月1日00:00:00(午夜)
最大值可以是9999年12月31日晚上11:59:59
初始化
主要参数:
年、月、日、时、分、秒、毫秒
ticks:以格里高利历00:00:00.000年1月1日以来的100纳秒间隔数表示,一般是一个很大的数字
次要参数:
- DateTimeKind:日期时间种类
- Local:本地时间
- Utc:UTC时间
- Unspecified:不指定
- Calendar:日历 使用哪个国家的日历,一般在Unity开发中不使用
DateTime dt = new DateTime(2022, 12, 1, 13, 30, 45, 500);
print(dt.Year + "-" + dt.Month + "-" + dt.Day + "-" + dt.Hour + "-" + dt.Minute + "-" + dt.Second + "-" + dt.Millisecond);以格里高利历00:00:00.000年1月1日以来的100纳秒间隔数表示,一般是一个很大的数字
print(dt.Ticks);一年的第多少天
print(dt.DayOfYear);星期几
print(dt.DayOfWeek);获取当前日期和时间
DateTime nowTime = DateTime.Now;
print(nowTime.Minute);
//返回今日日期
DateTime nowTime2 = DateTime.Today;
print(nowTime2.Year + "-" + nowTime2.Month + "-" + nowTime2.Day);
//返回当前UTC日期和时间
DateTime nowTimeUTC = DateTime.UtcNow;计算时间
//各种加时间
DateTime nowTime3 = nowTime.AddDays(-1);
print(nowTime3.Day);时间字符串输出
print(nowTime.ToString());
print(nowTime.ToShortTimeString());
print(nowTime.ToShortDateString());
print(nowTime.ToLongTimeString());
print(nowTime.ToLongDateString());
print(nowTime.ToString("D"));
print(nowTime.ToString("yyyy-MM-dd-ddd/HH-mm-ss"));字符串转DateTime
字符串想要转回DateTime成功的话
那么这个字符串的格式是有要求的 一定是最基本的 toString的转换出来的字符串才能转回去
年/月/日 时:分:秒
string str = nowTime.ToString();
str = "1988/5/4 18:00:08";
print(str);
DateTime dt3;
if(DateTime.TryParse(str, out dt3))
{
print(dt3);
}
else
{
print("转换失败");
}存储时间
存储时间的方式很多
- 以直接存字符串
- 可以直接存Ticks
- 可以直接存时间戳信息(存储时间戳的形式 更加节约)
TimeSpan
TimeSpan 是 C# 提供给我们的时间跨度结构体
用两个DateTime对象相减 可以得到该对象
TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1);
print(ts.TotalMinutes);
print(ts.TotalSeconds);
print(ts.TotalDays);
print(ts.TotalHours);
print(ts.Ticks);
print(ts.Days + "-" + ts.Hours + "-" + ts.Minutes + "-" + ts.Seconds + "-" + ts.Milliseconds);初始化它来代表时间间隔
TimeSpan ts2 = new TimeSpan(1,0,0,0);
DateTime timeNow = DateTime.Now + ts2;用它相互计算
TimeSpan ts3 = new TimeSpan(0, 1, 1, 1);
TimeSpan ts4 = ts2 + ts3;
print(ts4.Days + "-" + ts4.Hours);自带常量方便用于和ticks进行计算
print(ts4.Ticks / TimeSpan.TicksPerSecond);