1、缘由
以前使用的方法过时了,所以整理了一个新的。
2、代码
using System;
using UnityEngine;
/// <summary>
/// 时间级别
/// </summary>
public enum TimeLevel
{
Seconds,
Milliseconds
}
public static class TimeStampExtension
{
/// <summary>
/// 时间转为时间戳
/// </summary>
/// <param name="dateTime">要转换的时间</param>
/// // <param name="timeLevel">时间级别</param>
/// <returns>时间戳</returns>
public static long ToTimeStamp(this DateTime dateTime, TimeLevel timeLevel)
{
DateTimeOffset dateTimeOffset = dateTime;
return ToTimeStamp(dateTimeOffset, timeLevel);
}
/// <summary>
/// 时间转为时间戳
/// </summary>
/// <param name="dateTimeOffset">要转换的时间</param>
/// // <param name="timeLevel">时间级别</param>
/// <returns>时间戳</returns>
public static long ToTimeStamp(this DateTimeOffset dateTimeOffset, TimeLevel timeLevel)
{
long time = default;
switch (timeLevel)
{
case TimeLevel.Seconds:
time = dateTimeOffset.ToUnixTimeSeconds();
break;
case TimeLevel.Milliseconds:
time = dateTimeOffset.ToUnixTimeMilliseconds();
break;
}
return time;
}
/// <summary>
/// 时间戳转时间
/// </summary>
/// <param name="timeStamp">时间戳</param>
/// <returns>DateTime</returns>
public static DateTime ToDateTime(this long timeStamp, out bool result)
{
int lengh = timeStamp.ToString().Length;
return timeStamp.ToDateTime(lengh, out result);
}
/// <summary>
/// 时间戳转时间
/// </summary>
/// <param name="timeStamp">时间戳</param>
/// <returns>DateTime</returns>
public static DateTime ToDateTime(this string timeStamp, out bool result)
{
return long.Parse(timeStamp).ToDateTime(timeStamp.Length, out result);
}
/// <summary>
/// 时间戳转时间
/// </summary>
/// <param name="timeStamp">时间戳</param>
/// <param name="lengh">长度</param>
/// <returns>DateTime</returns>
private static DateTime ToDateTime(this long timeStamp, int lengh, out bool result)
{
result = true;
DateTime dateTime = DateTimeOffset.FromUnixTimeMilliseconds(timeStamp).LocalDateTime;
switch (lengh)
{
case 10:
return dateTime;
case 13:
return dateTime;
default:
result = false;
Debug.LogError("时间戳格式错误!");
return default;
}
}
}