132 lines
3.8 KiB
C#
132 lines
3.8 KiB
C#
|
|
using System;
|
|||
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public enum E_MoreThanType
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
MS,
|
|||
|
|
/// <summary>
|
|||
|
|
/// ʱ<><CAB1><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
HMS,
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
DHMS,
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
/// </summary>
|
|||
|
|
public enum E_IntervalType
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>
|
|||
|
|
/// </summary>
|
|||
|
|
D,
|
|||
|
|
/// <summary>
|
|||
|
|
/// ʱ
|
|||
|
|
/// </summary>
|
|||
|
|
H,
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>
|
|||
|
|
/// </summary>
|
|||
|
|
M,
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>
|
|||
|
|
/// </summary>
|
|||
|
|
S,
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public class TimeManager : SingletonManager<TimeManager>
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>long<6E>õ<EFBFBD><C3B5><EFBFBD>ʾʱ<CABE><CAB1>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="timestamp"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DateTime GetDateTimeSeconds(long timestamp)
|
|||
|
|
{
|
|||
|
|
long begtime = timestamp * 10000000;
|
|||
|
|
DateTime dt_1970 = new DateTime(1970, 1, 1, 8, 0, 0);
|
|||
|
|
long tricks_1970 = dt_1970.Ticks;//1970<37><30>1<EFBFBD><31>1<EFBFBD>տ̶<D5BF>
|
|||
|
|
long time_tricks = tricks_1970 + begtime;//<2F><>־<EFBFBD><D6BE><EFBFBD>ڿ̶<DABF>
|
|||
|
|
DateTime dt = new DateTime(time_tricks);//ת<><D7AA>ΪDateTime
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>õ<EFBFBD> long
|
|||
|
|
/// </summary>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public long GetTimeSpan()
|
|||
|
|
{
|
|||
|
|
TimeSpan timeStamp = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0);
|
|||
|
|
return Convert.ToInt64(timeStamp.TotalSeconds);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="startTimer"><3E><>ʼʱ<CABC><CAB1></param>
|
|||
|
|
/// <param name="endTimer"><3E><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public T GetSubSeconds<T>(DateTime startTimer, DateTime endTimer, E_IntervalType e_IntervalType) where T : struct
|
|||
|
|
{
|
|||
|
|
TimeSpan startSpan = new TimeSpan(startTimer.Ticks);
|
|||
|
|
TimeSpan nowSpan = new TimeSpan(endTimer.Ticks);
|
|||
|
|
TimeSpan subTimer = nowSpan.Subtract(startSpan).Duration();
|
|||
|
|
T time = default(T);
|
|||
|
|
switch (e_IntervalType)
|
|||
|
|
{
|
|||
|
|
case E_IntervalType.D:
|
|||
|
|
time = (T)Convert.ChangeType(subTimer.Days, typeof(T));
|
|||
|
|
break;
|
|||
|
|
case E_IntervalType.H:
|
|||
|
|
time = (T)Convert.ChangeType(subTimer.Hours, typeof(T));
|
|||
|
|
break;
|
|||
|
|
case E_IntervalType.M:
|
|||
|
|
time = (T)Convert.ChangeType(subTimer.TotalMinutes, typeof(T));
|
|||
|
|
break;
|
|||
|
|
case E_IntervalType.S:
|
|||
|
|
time = (T)Convert.ChangeType(subTimer.TotalSeconds, typeof(T));
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ֡<CFB7>ʱ<EFBFBD>IJ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return time;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD>뻻<EFBFBD><EBBBBB><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>ʽ
|
|||
|
|
/// </summary>
|
|||
|
|
public string ConversionTable(float second, E_MoreThanType e_MoreThan)//<2F><><EFBFBD><EFBFBD>ʱ
|
|||
|
|
{
|
|||
|
|
string time = "";
|
|||
|
|
int d = Mathf.FloorToInt(second / 86400); // 1<><31> = 86400<30><30>
|
|||
|
|
int h = Mathf.FloorToInt(second / 3600); //<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1> һСʱΪ3600<30><30> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3600ȡ<30><C8A1><EFBFBD><EFBFBD>ΪСʱ
|
|||
|
|
int m = Mathf.FloorToInt(second % 3600 / 60); //һ<><D2BB><EFBFBD><EFBFBD>Ϊ60<36><30> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3600ȡ<30><C8A1><EFBFBD>ٶ<EFBFBD>60ȡ<30><C8A1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
|||
|
|
float s = Mathf.FloorToInt(second % 3600 % 60);//<2F><>3600ȡ<30><C8A1><EFBFBD>ٶ<EFBFBD>60ȡ<30>༴Ϊ<E0BCB4><CEAA><EFBFBD><EFBFBD>
|
|||
|
|
switch (e_MoreThan)
|
|||
|
|
{
|
|||
|
|
case E_MoreThanType.MS:
|
|||
|
|
time = m + ":" + s.ToString("00");//<2F><><EFBFBD><EFBFBD>00:00ʱ<30><CAB1><EFBFBD><EFBFBD>ʽ
|
|||
|
|
break;
|
|||
|
|
case E_MoreThanType.HMS:
|
|||
|
|
time = h + ":" + m + ":" + s.ToString("00");//<2F><><EFBFBD><EFBFBD>00:00:00ʱ<30><CAB1><EFBFBD><EFBFBD>ʽ
|
|||
|
|
break;
|
|||
|
|
case E_MoreThanType.DHMS:
|
|||
|
|
time = d + ":" + h + ":" + m + ":" + s.ToString("00");//<2F><><EFBFBD><EFBFBD>00:00:00ʱ<30><CAB1><EFBFBD><EFBFBD>ʽ
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
return time;
|
|||
|
|
}
|
|||
|
|
}
|