68 lines
2.1 KiB
C#
68 lines
2.1 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
namespace BITKit
|
||
{
|
||
public static class TimeUtils
|
||
{
|
||
///<summary>
|
||
///2023-02-45 15:02:45:628
|
||
///</summary>
|
||
public const string dateTimeFormat = "yyyy-MM-dd HH:mm:ss:fff";
|
||
/// <summary>
|
||
/// 带毫秒的字符转换成时间(DateTime)格式
|
||
/// 可处理格式:[2014-10-10 10:10:10,666 或 2014-10-10 10:10:10 666 或 2014-10-10 10:10:10.666]
|
||
/// </summary>
|
||
/// 2022-12-30 15:39:48:795
|
||
/// 20080501T08:30:52Z"
|
||
/// yyyyMMddTHH:mm:ssZ
|
||
public static DateTime GetDateTime(string dateTime)
|
||
{
|
||
try
|
||
{
|
||
return DateTime.ParseExact(dateTime, dateTimeFormat, null);
|
||
}
|
||
catch (System.Exception)
|
||
{
|
||
try
|
||
{
|
||
return GetDateTime_SCADA(dateTime);
|
||
}
|
||
catch (System.Exception)
|
||
{
|
||
Debug.LogWarning($"{dateTime}\n{dateTimeFormat}");
|
||
throw;
|
||
}
|
||
}
|
||
|
||
}
|
||
public static float GetNow(DateTime now = default)
|
||
{
|
||
now = now == default ? DateTime.Now : now;
|
||
float time = 0;
|
||
time += now.Hour * 60 * 60;
|
||
time += now.Minute * 60;
|
||
time += now.Second;
|
||
time += now.Millisecond * 0.001f;
|
||
return time;
|
||
}
|
||
public static string GetNowString(DateTime now = default)
|
||
{
|
||
now = now == default ? DateTime.Now : now;
|
||
return now.ToString(dateTimeFormat);
|
||
}
|
||
static DateTime GetDateTime_SCADA(this string dateTime)
|
||
{
|
||
string[] strArr = dateTime.Split(new char[] { '-', ' ', ':', ',', '.' });
|
||
DateTime dt = new DateTime(int.Parse(strArr[0]),
|
||
int.Parse(strArr[1]),
|
||
int.Parse(strArr[2]),
|
||
int.Parse(strArr[3]),
|
||
int.Parse(strArr[4]),
|
||
int.Parse(strArr[5]),
|
||
int.Parse(strArr[6]));
|
||
return dt;
|
||
}
|
||
}
|
||
} |