Unity基础 Unity获取当前时间的时间戳

Posted 彭老希

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity基础 Unity获取当前时间的时间戳相关的知识,希望对你有一定的参考价值。

一、单位换算

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

以上是关于Unity基础 Unity获取当前时间的时间戳的主要内容,如果未能解决你的问题,请参考以下文章

unity之lua计算某一时间段开始和结束时间戳

unity实战之lua计算某一时间段开始和结束时间戳

是否可以在 Unity 中获取精灵表动画的当前帧?

Unity中实现时间戳与C#时间互转

Unity中实现时间戳与C#时间互转

从 Unity3d 中的 Animator 获取动画状态