获取时间戳

方案一:

 

using System;
using UnityEngine;
 
public class TimeTest : MonoBehaviour
{
    DateTime startTime;
 
    private void Start()
    {
        //获取开始时的时间
        startTime = DateTime.Now;
        Debug.Log("startTime="+ startTime);
 
        //获取当前时间戳
        long unixTime = ConvertDateTimep(DateTime.Now);
        Debug.Log(unixTime);
        //将时间戳转换为DateTime
        Debug.Log(GetTime(unixTime.ToString()).ToString());
 
        Debug.Log(GetTime(unixTime.ToString()).Year);
        Debug.Log(GetTime(unixTime.ToString()).Month);
        Debug.Log(GetTime(unixTime.ToString()).Day);
        Debug.Log(GetTime(unixTime.ToString()).Hour);
        Debug.Log(GetTime(unixTime.ToString()).Minute);
        Debug.Log(GetTime(unixTime.ToString()).Second);
 
 
    }
    /// <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>
    /// 获得时间戳 
    /// </summary>
    /// <returns></returns>
    private long GetTime()
    {
        //精确到毫秒
        return new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
    }
    /// <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);
    }
 
 
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Z))
        {
            //获取当前时间,并打印当前时间与开始时间相差秒数(以秒为单位)
            DateTime curtimer = DateTime.Now;
            Debug.Log(curtimer);
            int timer = GetSubSeconds(startTime, curtimer);
            Debug.Log(timer);
        }
    }
 
    /// <summary>
    /// 获取间隔秒数
    /// </summary>
    /// <param name="startTimer"></param>
    /// <param name="endTimer"></param>
    /// <returns></returns>
    public int GetSubSeconds(DateTime startTimer, DateTime endTimer)
    {
        TimeSpan startSpan = new TimeSpan(startTimer.Ticks);
 
        TimeSpan nowSpan = new TimeSpan(endTimer.Ticks);
 
        TimeSpan subTimer = nowSpan.Subtract(startSpan).Duration();
 
        //返回间隔秒数(不算差的分钟和小时等,仅返回秒与秒之间的差)
        //return subTimer.Seconds;
 
        //返回相差时长(算上分、时的差值,返回相差的总秒数)
        return (int)subTimer.TotalSeconds;
    }
 
    /// <summary>
    /// 获取两个时间的相差多少分钟
    /// </summary>
    /// <param name="startTimer"></param>
    /// <param name="endTimer"></param>
    /// <returns></returns>
    public int GetSubMinutes(DateTime startTimer, DateTime endTimer)
    {
        TimeSpan startSpan = new TimeSpan(startTimer.Ticks);
 
        TimeSpan nowSpan = new TimeSpan(endTimer.Ticks);
 
        TimeSpan subTimer = nowSpan.Subtract(startSpan).Duration();
 
        //返回相差时长(仅返回相差的分钟数)
        //return subTimer.Minutes;
        //返回相差时长(仅返回相差的总分钟数)
        return (int)subTimer.TotalMinutes;
    }
 
 
    /// <summary>
    /// 获取两个时间的相差多少小时
    /// </summary>
    /// <param name="startTimer"></param>
    /// <param name="endTimer"></param>
    /// <returns></returns>
    public int GetSubHours(DateTime startTimer, DateTime endTimer)
    {
        TimeSpan startSpan = new TimeSpan(startTimer.Ticks);
 
        TimeSpan nowSpan = new TimeSpan(endTimer.Ticks);
 
        TimeSpan subTimer = nowSpan.Subtract(startSpan).Duration();
 
        //返回相差时长(仅返回相差的小时)
        //return subTimer.Hours;
        //返回相差时长(返回相差的总小时数)
        return (int)subTimer.TotalHours;
    }
 
    /// <summary>
    /// 获取两个时间的相差多少天
    /// </summary>
    /// <param name="startTimer"></param>
    /// <param name="endTimer"></param>
    /// <returns></returns>
    public int GetSubDays(DateTime startTimer, DateTime endTimer)
    {
        TimeSpan startSpan = new TimeSpan(startTimer.Ticks);
 
        TimeSpan nowSpan = new TimeSpan(endTimer.Ticks);
 
        TimeSpan subTimer = nowSpan.Subtract(startSpan).Duration();
 
        //返回相差时长(仅返回相差的天数)
        //return subTimer.Days;
        //返回相差时长(返回相差的总天数)
        return (int)subTimer.TotalDays;
    }
}
 

 

posted @ 2024-03-13 15:56  WalkingSnail  阅读(5)  评论(0编辑  收藏  举报