using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class TimeTools { /// /// DateTime转时间戳 /// /// DateTime /// 时间戳(秒) public static long ConvertToTimeStamp(DateTime targetDateTime) { return (targetDateTime.ToUniversalTime().Ticks - 621355968000000000) / 10000000; } /// /// 时间戳转DateTime /// /// 时间戳(秒) /// DateTime public static DateTime GetDateTimeFromTimeStamp(long timeStamp) { //获取到当前时区的开始时间戳 DateTime startDateTime = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(1970, 1, 1, 0, 0, 0), TimeZoneInfo.Local); long targetTimeStamp = ((long)timeStamp * 10000000); TimeSpan targetTS = new TimeSpan(targetTimeStamp); DateTime targetDateTime = startDateTime.Add(targetTS); return targetDateTime; } //一天总共的秒数 private const int CN_ONE_DAY_SECONDS = 24 * 60 * 60; //一小时总共的秒数 private const int CN_ONE_HOUR_SECONDS = 60 * 60; //一分钟总共的秒数 private const int CN_ONE_MIN_SECONDS = 60; /// /// 把秒数转换成天时分秒 /// /// 总的秒数 /// public static string ConvertSecToDHMS(int totalSeconds) { int days = totalSeconds / CN_ONE_DAY_SECONDS; int hours = totalSeconds % CN_ONE_DAY_SECONDS / CN_ONE_HOUR_SECONDS; int minutes = totalSeconds % CN_ONE_HOUR_SECONDS / CN_ONE_MIN_SECONDS; int seconds = totalSeconds % CN_ONE_HOUR_SECONDS % CN_ONE_MIN_SECONDS; return string.Format("{0}天:{1}时:{2}分:{3}秒:", days, hours, minutes, seconds); } //获取第N天的0点的时间戳(游戏中常用作活动的刷新,可以做个计时器,获取到这个时间戳然后我当前时间戳相减做回调处理) public static long GetNextDayZeroTimeStamp(int day) { //当天0时0分0秒 DateTime todayMidnight = DateTime.Now.Date; //第二天的0时0分0秒 DateTime nextDayMidnight = todayMidnight.AddDays(day); return ConvertToTimeStamp(nextDayMidnight); } /// /// 当前的时间戳 /// public static long TimeStampNow { get { return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; } } }