获取时间戳
方案一:
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; } }