介绍
在开发游戏的时候,和时间打交道是一个必不可少的部分。而时间戳就是用的最多的一个,尤其是和服务端通信。
那时间戳是什么?
时间戳就是从1970年1月1日0时0分0秒起到现在的总毫秒数,为什么时1970/1/1/00:00:00,因为第一台计算机发明时间是这个时间。
1.DateTime
DateTime是Unity提供的一个获取时候的类
void Start()
{
DateTime date = DateTime.Now;
Debug.Log("年:" + date.Year);
Debug.Log("月:" + date.Month);
Debug.Log("日:" + date.Day);
Debug.Log("时:" + date.Hour);
Debug.Log("分:" + date.Hour);
Debug.Log("秒:" + date.Second);
//第几周:返回枚举,从0开始, 0代表周日,1代表周一
Debug.Log("周:" + date.DayOfWeek);
Debug.Log("一年中的第几天:" + date.DayOfYear);
}
2.获取时间戳
void Start()
{
//获取当前Ticks,
long currentTicks = DateTime.Now.ToUniversalTime().Ticks;
DateTime dtFrom = new DateTime(1970, 1, 1, 0, 0, 0, 0);
long Ticks = (currentTicks - dtFrom.Ticks) / 10000000;
Debug.Log("当前时间戳:" + Ticks);
}
可以用时间戳转换工具来验证查询:时间戳转换
3.时间戳转日期
void Start()
{
//要转换的时间戳
long timestamp = 1710209909;
DateTime time = new DateTime(1970, 1, 1).AddSeconds(timestamp);
//需要加上时区,这个很重要,不然得出的时间会出现偏差
time = time.AddHours(TimeZoneInfo.Local.GetUtcOffset(time).TotalHours);
// 格式化日期字符串
string formattedDate = time.ToString("yyyy-MM-dd HH:mm:ss");
// 打印结果
Debug.Log(formattedDate);
}
4.倒计时方法
//time:需要倒计时的时长,单位秒
public string GetTime(long time )
{
//算出倒计时时分秒
int day, hour, minute, second;
day = Convert.ToInt16(time / 86400);
hour = Convert.ToInt16((time % 86400) / 3600);
minute = Convert.ToInt16((time % 86400 % 3600) / 60);
second = Convert.ToInt16((time % 86400 % 3600) % 60 );
return string.Format("倒计时:{0}天{1}时{2}分{3}秒", day, hour, minute, second);
}