| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- using System;
- namespace ET
- {
- /// <summary>
- /// 时间工具类
- /// </summary>
- public static class DateTimeUtil
- {
- /// <summary>
- /// 时间戳计时开始时间
- /// </summary>
- private static DateTime timeStampStartTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
- /// <summary>
- /// DateTime转换为10位时间戳(单位:秒)
- /// </summary>
- /// <param name="dateTime"> DateTime</param>
- /// <returns>10位时间戳(单位:秒)</returns>
- public static long DateTimeToTimeStamp(DateTime dateTime)
- {
- return (long)(dateTime.ToUniversalTime() - timeStampStartTime).TotalSeconds;
- }
- /// <summary>
- /// DateTime转换为13位时间戳(单位:毫秒)
- /// </summary>
- /// <param name="dateTime"> DateTime</param>
- /// <returns>13位时间戳(单位:毫秒)</returns>
- public static long DateTimeToLongTimeStamp(DateTime dateTime)
- {
- return (long)(dateTime.ToUniversalTime() - timeStampStartTime).TotalMilliseconds;
- }
- /// <summary>
- /// 10位时间戳(单位:秒)转换为DateTime
- /// </summary>
- /// <param name="timeStamp">10位时间戳(单位:秒)</param>
- /// <returns>DateTime</returns>
- public static DateTime TimeStampToDateTime(long timeStamp)
- {
- return timeStampStartTime.AddSeconds(timeStamp).ToLocalTime();
- }
- /// <summary>
- /// 13位时间戳(单位:毫秒)转换为DateTime
- /// </summary>
- /// <param name="longTimeStamp">13位时间戳(单位:毫秒)</param>
- /// <returns>DateTime</returns>
- public static DateTime LongTimeStampToDateTime(long longTimeStamp)
- {
- return timeStampStartTime.AddMilliseconds(longTimeStamp).ToLocalTime();
- }
- public const string FormatA = "yyyyMMdd";
- public const string FormatB = "yyyyMMddHH";
- public const string FormatC = "yyyyMMddHHmm";
- public const string FormatD = "yyyyMMddHHmmss";
- public const string FormatE = "yyyyMMddHHmmssFFF";
- public const string FormatF = "HHmmss";
- /// <summary>
- /// 当前时间 yyyyMMddHHmmssFFF
- /// </summary>
- /// <returns></returns>
- public static long GetNowTime(string format)
- {
- if (format == FormatE)
- {
- return UpTimeStamp(long.Parse(TimeHelper.DateTimeNow().ToString(format)));
- }
- else
- {
- return long.Parse(TimeHelper.DateTimeNow().ToString(format));
- }
- }
- public static long UpTimeStamp(long lg)
- {
- if (lg == 0) return lg;
- string logStr = lg.ToString();
- if (logStr.Length < 17)
- {
- return UpTimeStamp(lg * 10);
- }
- else
- {
- return lg;
- }
- }
- /// <summary>
- /// 当前时间 yyyyMMddHHmmssFFF
- /// </summary>
- /// <returns></returns>
- public static long GetTime(DateTime dt, string format)
- {
- if (format == FormatE)
- {
- long lgTime = UpTimeStamp(long.Parse(dt.ToString(format)));
- return lgTime;
- }
- else
- {
- return long.Parse(dt.ToString(format));
- }
- }
- /// <summary>
- /// 获取指定中国毫秒级时间戳所在日期的凌晨5点的时间戳
- /// </summary>
- /// <param name="timestamp">13位时间戳</param>
- /// <returns></returns>
- public static long GetChinaToday5AMTimestamp(long timestamp)
- {
- DateTime dateTime = DateTimeUtil.LongTimeStampToDateTime(timestamp);
- // 转换为 DateTimeOffset
- DateTimeOffset dateTimeOffset = new DateTimeOffset(dateTime);
- // 获取当天日期的凌晨00点
- DateTimeOffset today = new DateTimeOffset(dateTimeOffset.Year, dateTimeOffset.Month, dateTimeOffset.Day, 0,
- 0, 0, TimeSpan.FromHours(8));
- // 设置凌晨5点的时间
- DateTimeOffset today5AM = today.AddHours(5);
- // 返回凌晨5点的时间戳(毫秒级)
- return today5AM.ToUnixTimeMilliseconds();
- }
- }
- }
|