84 lines
2.5 KiB
C#
84 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
using System.Text;
|
|
/**
|
|
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
|
* 11/6/2018 10:03:00 AM
|
|
* bradyxiao
|
|
*/
|
|
namespace COSXML.Utils
|
|
{
|
|
public sealed class TimeUtils
|
|
{
|
|
// utc start time
|
|
public static readonly DateTime UTC_START_TIME = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
|
|
/**
|
|
* 根据UTC时间戳的含义= UTC时间 - UTC起始时间
|
|
*/
|
|
public static long GetCurrentTime(TimeUnit timeUnit)
|
|
{
|
|
TimeSpan timeSpan = DateTime.UtcNow - UTC_START_TIME;
|
|
long result = -1L;
|
|
switch (timeUnit)
|
|
{
|
|
case TimeUnit.DAYS:
|
|
result = (long)timeSpan.TotalDays;
|
|
break;
|
|
case TimeUnit.HOURS:
|
|
result = (long)timeSpan.TotalHours;
|
|
break;
|
|
case TimeUnit.MINUTES:
|
|
result = (long)timeSpan.TotalMinutes;
|
|
break;
|
|
case TimeUnit.SECONDS:
|
|
result = (long)timeSpan.TotalSeconds;
|
|
break;
|
|
case TimeUnit.MILLISECONDS:
|
|
result = (long)timeSpan.TotalMilliseconds;
|
|
break;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* 先获取 对应的 UTC -> 转为 当前时区的时间
|
|
*/
|
|
public static string GetFormatTime(string format, long time, TimeUnit timeUnit)
|
|
{
|
|
DateTime end = DateTime.MinValue;
|
|
DateTime start = UTC_START_TIME;
|
|
switch (timeUnit)
|
|
{
|
|
case TimeUnit.DAYS:
|
|
end = start.AddDays(time);
|
|
break;
|
|
case TimeUnit.HOURS:
|
|
end = start.AddHours(time);
|
|
break;
|
|
case TimeUnit.MINUTES:
|
|
end = start.AddMinutes(time);
|
|
break;
|
|
case TimeUnit.SECONDS:
|
|
end = start.AddSeconds(time);
|
|
break;
|
|
case TimeUnit.MILLISECONDS:
|
|
end = start.AddMilliseconds(time);
|
|
break;
|
|
}
|
|
end = TimeZone.CurrentTimeZone.ToLocalTime(end);
|
|
return end.ToString(format);
|
|
}
|
|
}
|
|
|
|
public enum TimeUnit
|
|
{
|
|
MILLISECONDS = 0,
|
|
SECONDS,
|
|
MINUTES,
|
|
HOURS,
|
|
DAYS,
|
|
}
|
|
}
|