123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Fuel.Infrastructure.Extension
- {
- public static class TimeExtension
- {
- /// <summary>
- /// 返回 yyyy-dd-mm hh:mm:ss
- /// </summary>
- /// <param name="dateTime"></param>
- /// <returns></returns>
- public static string ToDateTimeString(this DateTime dateTime)
- {
- return dateTime.ToString("yyyy-MM-dd HH:mm:ss");
- }
- /// <summary>
- /// 返回 yyyy-dd-mm hh:mm:ss
- /// </summary>
- /// <param name="dateTime"></param>
- /// <returns></returns>
- public static string ToDateTimeString(this DateTime? dateTime)
- {
- if (dateTime == null)
- {
- return "";
- }
- return ((DateTime)dateTime).ToString("yyyy-MM-dd HH:mm:ss");
- }
- /// <summary>
- /// 获取本地时间的世界时间戳
- /// </summary>
- /// <returns></returns>
- public static long GetNowTimeStamp(bool isInMillisecond = false)
- {
- int unit = isInMillisecond ? 10000 : 10000000;
- var TimeStamps = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / unit;
- return TimeStamps;
- }
- /// <summary>
- /// 将时间转换为时间戳
- /// </summary>
- /// <param name="dateTime"></param>
- /// <returns></returns>
- public static long ToTimeStamp(DateTime dateTime, bool isInMillisecond = false)
- {
- int unit = isInMillisecond ? 10000 : 10000000;
- var TimeStamps = (dateTime.Ticks - 621355968000000000) / unit;
- return TimeStamps;
- }
- /// <summary>
- /// 获取本地时间的世界时间的偏移量
- /// </summary>
- /// <returns></returns>
- public static long GetUtcOffsets()
- {
- var UtcOffsets = TimeZone.CurrentTimeZone.GetUtcOffset(new DateTime()).Ticks / 10000;
- return UtcOffsets;
- }
- /// <summary>
- /// 将时间戳转换为时间
- /// </summary>
- /// <returns></returns>
- 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;
- }
- /// <summary>
- /// 将时间戳转换为时间
- /// </summary>
- /// <returns></returns>
- 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);
- }
- /// <summary>
- /// 将时间戳转换为时间
- /// </summary>
- /// <returns></returns>
- 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);
- }
- /// <summary>
- /// 获取该时间相对于1970-01-01 00:00:00的秒数
- /// </summary>
- /// <param name="dt"></param>
- /// <returns></returns>
- public static double GetTotalSeconds(this in DateTime dt) => new DateTimeOffset(dt).ToUnixTimeSeconds();
- /// <summary>
- /// 获取该时间相对于1970-01-01 00:00:00的毫秒数
- /// </summary>
- /// <param name="dt"></param>
- /// <returns></returns>
- public static double GetTotalMilliseconds(this in DateTime dt) => new DateTimeOffset(dt).ToUnixTimeMilliseconds();
- /// <summary>
- /// 获取该时间相对于1970-01-01 00:00:00的微秒时间戳
- /// </summary>
- /// <param name="dt"></param>
- /// <returns></returns>
- public static long GetTotalMicroseconds(this in DateTime dt) => new DateTimeOffset(dt).Ticks / 10;
- }
- }
|