一、单位换算
1秒 = 1000毫秒
1毫秒 = 1000微妙
1微秒 = 1000纳秒
二、获取Unix时间戳
/// <summary>
/// 获取时间戳(精确到秒)
/// TimeTool.ConvertDateTimep(DateTime.Now)
/// </summary>
/// <param name="time">时间</param>
public static long ConvertDateTimep(DateTime time)
{
return ((time.ToUniversalTime().Ticks - 621355968000000000) / 10000000);
//等价于:
//return ((time.ToUniversalTime().Ticks - new DateTime(1970, 1, 1, 0, 0, 0, 0).Ticks) / 10000000) * 1000;
}
/// <summary>
/// 时间戳转为C#格式时间
/// TimeTool.GetTime(TimeTool.ConvertDateTiemp(DateTime.Now).ToString())
/// </summary>
/// <param name="timeStamp">时间戳</param>
/// <returns></returns>
public static DateTime GetTime(string timeStamp)
{
if (timeStamp.Length > 10)
{
timeStamp = timeStamp.Substring(0, 10);
}
DateTime dateTimeStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(timeStamp + "0000000");
TimeSpan toNow = new TimeSpan(lTime);
return dateTimeStart.Add(toNow);
}
时间戳使用方式
//获取当前时间戳
long unixTime = TimeTool.ConvertDateTimep(DateTime.Now);
Debug.Log(unixTime);
//将时间戳转换为DateTime
Debug.Log(TimeTool.GetTime(unixTime.ToString()).ToString());
Debug.Log(TimeTool.GetTime(unixTime.ToString()).Year);
Debug.Log(TimeTool.GetTime(unixTime.ToString()).Month);
Debug.Log(TimeTool.GetTime(unixTime.ToString()).Day);
Debug.Log(TimeTool.GetTime(unixTime.ToString()).Hour);
Debug.Log(TimeTool.GetTime(unixTime.ToString()).Minute);
Debug.Log(TimeTool.GetTime(unixTime.ToString()).Second);
三、获取当前时间的时间戳
private long GetTime()
{
//精确到毫秒
return new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
}
四、获取当前时间毫秒值
方式一:
例如:获取从1970年1月1日至当前时间所经过的毫秒数
//获取当前Ticks
long currentTicks=DateTime.Now.Ticks;
DateTime dtFrom = new DateTime(1970, 1, 1, 0, 0, 0, 0);
long currentMillis = (currentTicks - dtFrom.Ticks) / 10000;
方式二:
例如一:获取当前时间毫秒数
(DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000
例如二:获取当前时间秒数
(DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000