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

Posted Hello Bug.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity中实现时间戳与C#时间互转相关的知识,希望对你有一定的参考价值。

一:什么是时间戳

时间戳是指格林威治时间1970年1月1日0时0分0秒起至现在的总毫秒数

1970年01月01日00时00分00秒的来历:UNIX系统认为1970年1月1日0点是时间纪元,所以我们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的


二:时间戳转C#时间

10位的时间戳是秒,13位的时间戳是毫秒

/// <summary>
/// 时间戳转C#时间
/// </summary>
public static DateTime TimeStamp2DateTime(long timeStamp, int timeZone = 0, bool isSecond = true)
{
    DateTime startTime = new DateTime(1970, 1, 1, timeZone, 0, 0);
    DateTime dt = isSecond
        ? startTime.AddSeconds(timeStamp)
        : startTime.AddMilliseconds(timeStamp);
    return dt;
}

三:C#时间转时间戳

/// <summary>
/// C#时间转时间戳
/// </summary>
public static long DateTime2TimeStamp(DateTime now, int timeZone = 0, bool getSecond = true)
{
    DateTime startTime = new DateTime(1970, 1, 1, timeZone, 0, 0);
    TimeSpan ts = now - startTime;
    return getSecond
        ? (long)ts.TotalSeconds
        : (long)ts.TotalMilliseconds;
}

四:其他工具

——得到时区
有些情况下服务器返回的时区是一个时区字符串,需要手动转换为时区偏移值

/// <summary>
/// 得到时区
/// </summary>
public static int GetTimeZone(string timeZoneStr)
{
    var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneStr);
    return timeZoneInfo.BaseUtcOffset.Hours;
}

以上是关于Unity中实现时间戳与C#时间互转的主要内容,如果未能解决你的问题,请参考以下文章

js时间戳与日期格式之间的互转

java Java的时间戳与日期格式字符串的互转

需要帮助在 Unity 3D 中实现移动输入

在Unity中实现简单的伪时间同步

unity中实现物体的拖拽到指定位置的功能

Unity3D 在自定义脚本中实现Button组件上的OnClick面板