75 lines
2.5 KiB
C#
Raw Normal View History

2025-03-11 16:24:25 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class TimeTools
{
/// <summary>
/// DateTimeתʱ<D7AA><CAB1><EFBFBD><EFBFBD>
/// </summary>
/// <param name="targetDateTime">DateTime</param>
/// <returns>ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룩</returns>
public static long ConvertToTimeStamp(DateTime targetDateTime)
{
return (targetDateTime.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
}
/// <summary>
/// ʱ<><CAB1><EFBFBD><EFBFBD>תDateTime
/// </summary>
/// <param name="timeStamp">ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룩</param>
/// <returns>DateTime</returns>
public static DateTime GetDateTimeFromTimeStamp(long timeStamp)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ǰʱ<C7B0><CAB1><EFBFBD>Ŀ<EFBFBD>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD>
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;
}
//һ<><D2BB><EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
private const int CN_ONE_DAY_SECONDS = 24 * 60 * 60;
//һСʱ<D0A1>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
private const int CN_ONE_HOUR_SECONDS = 60 * 60;
//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
private const int CN_ONE_MIN_SECONDS = 60;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
/// </summary>
/// <param name="totalSeconds"><3E>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns></returns>
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}<7D>죺{1}ʱ<><CAB1>{2}<7D>֣<EFBFBD>{3}<7D>룺", days, hours, minutes, seconds);
}
//<2F><>ȡ<EFBFBD><C8A1>N<EFBFBD><4E><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6AF>ˢ<EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD>ҵ<EFBFBD>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public static long GetNextDayZeroTimeStamp(int day)
{
//<2F><><EFBFBD><EFBFBD>0ʱ0<CAB1><30>0<EFBFBD><30>
DateTime todayMidnight = DateTime.Now.Date;
//<2F>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD>0ʱ0<CAB1><30>0<EFBFBD><30>
DateTime nextDayMidnight = todayMidnight.AddDays(day);
return ConvertToTimeStamp(nextDayMidnight);
}
/// <summary>
/// <20><>ǰ<EFBFBD><C7B0>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
/// </summary>
public static long TimeStampNow
{
get
{
return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
}
}
}