Unity中实现时间戳与C#时间互转
Posted Hello Bug.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity中实现时间戳与C#时间互转相关的知识,希望对你有一定的参考价值。
一:什么是时间戳
时间戳是指格林威治时间1970年1月1日0时0分0秒起至现在的总毫秒数
1970年01月01日00时00分00秒的来历:UNIX系统认为1970年1月1日0点是时间纪元,所以我们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的
二:时间戳转C#时间
10位的时间戳是秒,13位的时间戳是毫秒
/// <summary>
/// 时间戳转C#时间
/// </summary>
public static DateTime TimeStamp2DateTime(long timeStamp, int timeZone = 0, bool isSecond = true)
DateTime startTime = new DateTime(1970, 1, 1, timeZone, 0, 0);
DateTime dt = isSecond
? startTime.AddSeconds(timeStamp)
: startTime.AddMilliseconds(timeStamp);
return dt;
三:C#时间转时间戳
/// <summary>
/// C#时间转时间戳
/// </summary>
public static long DateTime2TimeStamp(DateTime now, int timeZone = 0, bool getSecond = true)
DateTime startTime = new DateTime(1970, 1, 1, timeZone, 0, 0);
TimeSpan ts = now - startTime;
return getSecond
? (long)ts.TotalSeconds
: (long)ts.TotalMilliseconds;
四:其他工具
——得到时区
有些情况下服务器返回的时区是一个时区字符串,需要手动转换为时区偏移值
/// <summary>
/// 得到时区
/// </summary>
public static int GetTimeZone(string timeZoneStr)
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneStr);
return timeZoneInfo.BaseUtcOffset.Hours;
以上是关于Unity中实现时间戳与C#时间互转的主要内容,如果未能解决你的问题,请参考以下文章