using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Fuel.Infrastructure.Extension
{
public static class TimeExtension
{
///
/// 返回 yyyy-dd-mm hh:mm:ss
///
///
///
public static string ToDateTimeString(this DateTime dateTime)
{
return dateTime.ToString("yyyy-MM-dd HH:mm:ss");
}
///
/// 返回 yyyy-dd-mm hh:mm:ss
///
///
///
public static string ToDateTimeString(this DateTime? dateTime)
{
if (dateTime == null)
{
return "";
}
return ((DateTime)dateTime).ToString("yyyy-MM-dd HH:mm:ss");
}
///
/// 获取本地时间的世界时间戳
///
///
public static long GetNowTimeStamp(bool isInMillisecond = false)
{
int unit = isInMillisecond ? 10000 : 10000000;
var TimeStamps = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / unit;
return TimeStamps;
}
///
/// 将时间转换为时间戳
///
///
///
public static long ToTimeStamp(DateTime dateTime, bool isInMillisecond = false)
{
int unit = isInMillisecond ? 10000 : 10000000;
var TimeStamps = (dateTime.Ticks - 621355968000000000) / unit;
return TimeStamps;
}
///
/// 获取本地时间的世界时间的偏移量
///
///
public static long GetUtcOffsets()
{
var UtcOffsets = TimeZone.CurrentTimeZone.GetUtcOffset(new DateTime()).Ticks / 10000;
return UtcOffsets;
}
///
/// 将时间戳转换为时间
///
///
public static DateTime ToDateTime(this long TimeStamps, bool millisecond = true)
{
if (millisecond)
{
return new DateTime(1970, 1, 1).AddMilliseconds(TimeStamps);
}
else
{
return new DateTime(1970, 1, 1).AddSeconds(TimeStamps);
}
}
public static DateTime ToDateTime(long TimeStamps)
{
var date = new DateTime(1970, 1, 1).AddMilliseconds(TimeStamps);
return date;
}
///
/// 将时间戳转换为时间
///
///
public static DateTime ToTime(this string TimeStamps)
{
var start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
try
{
if (TimeStamps.Length >= 13)
{
return start.AddMilliseconds(Convert.ToInt64(TimeStamps)).AddHours(8);
}
else
{
return start.AddSeconds(Convert.ToInt64(TimeStamps)).AddHours(8);
}
}
catch { }
return DateTime.Now.AddYears(-1);
}
///
/// 将时间戳转换为时间
///
///
public static DateTime ToUTCTime(this string TimeStamps)
{
var start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
try
{
if (TimeStamps.Length >= 13)
{
return start.AddMilliseconds(Convert.ToInt64(TimeStamps));
}
else
{
return start.AddSeconds(Convert.ToInt64(TimeStamps));
}
}
catch { }
return DateTime.Now.AddYears(-1);
}
///
/// 获取该时间相对于1970-01-01 00:00:00的秒数
///
///
///
public static double GetTotalSeconds(this in DateTime dt) => new DateTimeOffset(dt).ToUnixTimeSeconds();
///
/// 获取该时间相对于1970-01-01 00:00:00的毫秒数
///
///
///
public static double GetTotalMilliseconds(this in DateTime dt) => new DateTimeOffset(dt).ToUnixTimeMilliseconds();
///
/// 获取该时间相对于1970-01-01 00:00:00的微秒时间戳
///
///
///
public static long GetTotalMicroseconds(this in DateTime dt) => new DateTimeOffset(dt).Ticks / 10;
}
}