using System;
using UnityEngine;
public class TimeTool
{
public static TimeSpan GetNowTimeSpan()
{
return DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
}
public static TimeSpan GetGameRunTimeSpan()
{
return GetGameRunTimeSpan((int)Time.realtimeSinceStartup);
}
public static TimeSpan GetGameRunTimeSpan(int runTime)
{
int hour = runTime / 3600;
int minute = (runTime - (hour * 3600)) / 60;
int second = runTime - (hour * 3600) - (minute * 60);
#if UNITY_EDITOR
Debug.Log($"get TimeSpan hour : {hour} minute : {minute} second : {second}");
#endif
return new TimeSpan(hour, minute, second);
}
///
/// 获取当前时间戳
///
/// 为真时获取10位时间戳,为假时获取13位时间戳.bool bflag = true
///
public static long GetTimeStamp(bool notMill)
{
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
if (notMill)
return Convert.ToInt64(ts.TotalSeconds);
else
return Convert.ToInt64(ts.TotalMilliseconds);
}
public static DateTime GetCurrDateTime(long timeStamp)
{
DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 当地时区
return startTime.AddTicks(timeStamp * 10000000);
}
///
/// 时间戳转化为本地时间
///
///
///
///
public static string GetFormatTime(long timeStamp, bool notMill)
{
DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 当地时区
DateTime dataTime = startTime.AddTicks(timeStamp * 10000000);
if (notMill)
{
return dataTime.ToString("yyyy-MM-dd HH:mm:ss");
}
else
{
return dataTime.ToString("yyyy-MM-dd HH:mm:ss fff");
}
}
public static int GetCurrDayOfYear()
{
return DateTime.Today.DayOfYear;
}
///
/// 获取当前是一年当中的第几周
///
///
public static int GetCurrWeekOfYear()
{
//一.找到第一周的最后一天(先获取1月1日是星期几,从而得知第一周周末是几)
int firstWeekend = 7 - Convert.ToInt32(DateTime.Parse(DateTime.Today.Year + "-1-1").DayOfWeek);
//二.获取今天是一年当中的第几天
int currentDay = DateTime.Today.DayOfYear;
//三.(今天 减去 第一周周末)/7 等于 距第一周有多少周 再加上第一周的1 就是今天是今年的第几周了
// 刚好考虑了惟一的特殊情况就是,今天刚好在第一周内,那么距第一周就是0 再加上第一周的1 最后还是1
return Convert.ToInt32(Math.Ceiling((currentDay - firstWeekend) / 7.0)) + 1;
}
}