unity 根据纪元时间(1970/1/1)转换为DateTime

首先,先说一下怎么根据DateTime获得时间的长整型

public static uint GetLongTime()
{
        DateTime time197011 = new DateTime(1970, 1, 1);
        DateTime time = DateTime.Now;
        TimeSpan ts = time - time197011;
        TimeZone localZone = TimeZone.CurrentTimeZone;
        TimeSpan off = localZone.GetUtcOffset(time);
        ts -= off;
        return (uint)ts.TotalSeconds;
}

 

然后,下面就是根据长整型转DateTime

public DateTime SystemTime2DateTime()
{
        DateTime dt197011 = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
        long lsystemTime = long.Parse(GetLongTime() + "0000000");
        TimeSpan toNowTs = new TimeSpan(lsystemTime);
        return dt197011.Add(toNowTs);
}

 

根据DateTime输出具体的年月日可以这样做

DateTime dt=SystemTime2DateTime();

Debug.Log(dt.ToString("yyyy/MM/dd HH:mm:ss")); //24小时制//

Debug.Log(dt.ToString("yyyy/MM/dd hh:mm:ss")); //12小时制//

如果要获取当前时间的时分秒,则直接可以这样:

Debug.Log(DataTime.Now.ToString("HH:mm:ss"));    //24小时制
Debug.Log(DataTime.Now.ToString("hh:mm:ss"));    //12小时制

 

你可能感兴趣的:(C#)