Unity 服务器时间

using System;
using UnityEngine;

public class ServerTimeManager : SingletonMonoBehaviour<ServerTimeManager>
{
    private long lCurServerTime = 0;					     //当前服务器时间 毫秒为单位
    private float fCheckTime = 0.0f;
    private DateTime daStartTime = new DateTime(1970, 1, 1); //服务器相对于C#的起始时间
    private float deltaTime = 0.0f;

    void Awake()
    {
        SetServerTime((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000);
    }

    public void SetServerTime(long _time)
    {
        fCheckTime = Time.realtimeSinceStartup;
        lCurServerTime = _time;

        Update();
    }

    public long GetfCurSerTime()
    {
        return lCurServerTime + (long)(deltaTime * 1000);
    }

    public DateTime GetServerTime()
    {
        return GetDateTime(GetfCurSerTime());
    }

    private void Update()
    {
        deltaTime = Time.realtimeSinceStartup - fCheckTime;
    }

    public bool IsSameDay(DateTime day)
    {
        DateTime now = GetServerTime();
        return day.Day == now.Day && day.Month == now.Month && day.Year == now.Year;
    }

    public bool IsSameDay(long time)
    {
        DateTime day = GetDateTime(time);
        return IsSameDay(day);
    }

    public float DeltaTime()
    {
        return deltaTime;
    }

    public DateTime GetDateTime(long millisceonds)
    {
        return daStartTime.AddMilliseconds(millisceonds).ToLocalTime();
    }

    public string GetDaysToNowString(long time)
    {
        if(time == 0)
        {
            return "";
        }
        if (IsSameDay(time))
        {
            return "今天";
        }
        TimeSpan span = GetServerTime().Date - GetDateTime(time);
        if (span.Days == 0)
        {
            return "昨天";
        }
        else if (span.Days >= 999)
        {
            return "999天前";
        }
        else
        {
            return span.Days + "天前";
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值