【Unity】时间戳与DateTime

介绍

在开发游戏的时候,和时间打交道是一个必不可少的部分。而时间戳就是用的最多的一个,尤其是和服务端通信。
那时间戳是什么?
时间戳就是从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); 

    }

猜你喜欢

转载自blog.csdn.net/qq_30144243/article/details/136642290