@@ -15,15 +15,6 @@ public static class TimeHelper
1515 /// </summary>
1616 public static readonly DateTime EpochUtc = TimeZoneInfo . ConvertTime ( new DateTime ( 1970 , 1 , 1 ) , TimeZoneInfo . Utc ) ;
1717
18- /// <summary>
19- /// 返回当前时间的毫秒表示。
20- /// </summary>
21- /// <returns>当前时间的毫秒数。</returns>
22- public static long CurrentTimeMillis ( )
23- {
24- return TimeMillis ( DateTime . Now ) ;
25- }
26-
2718 /// <summary>
2819 /// 当前UTC 时间 秒时间戳
2920 /// </summary>
@@ -42,6 +33,14 @@ public static long UnixTimeMilliseconds()
4233 return new DateTimeOffset ( DateTime . UtcNow ) . ToUnixTimeMilliseconds ( ) ;
4334 }
4435
36+ /// <summary>
37+ /// 当前时区时间 秒时间戳
38+ /// </summary>
39+ /// <returns>当前时区时间的秒时间戳。</returns>
40+ public static long TimeSeconds ( )
41+ {
42+ return new DateTimeOffset ( DateTime . Now ) . ToUnixTimeSeconds ( ) ;
43+ }
4544
4645 /// <summary>
4746 /// 当前时区时间 毫秒时间戳
@@ -58,7 +57,7 @@ public static long TimeMilliseconds()
5857 /// <param name="time">指定时间。</param>
5958 /// <param name="utc">是否使用UTC时间。</param>
6059 /// <returns>距离纪元时间的毫秒数。</returns>
61- public static long TimeMillis ( DateTime time , bool utc = false )
60+ public static long TimeToMilliseconds ( DateTime time , bool utc = false )
6261 {
6362 if ( utc )
6463 {
@@ -74,7 +73,7 @@ public static long TimeMillis(DateTime time, bool utc = false)
7473 /// <param name="time">指定时间。</param>
7574 /// <param name="utc">是否使用UTC时间。</param>
7675 /// <returns>距离纪元时间的秒数。</returns>
77- public static int TimeSecond ( DateTime time , bool utc = false )
76+ public static int TimeToSecond ( DateTime time , bool utc = false )
7877 {
7978 if ( utc )
8079 {
@@ -84,14 +83,6 @@ public static int TimeSecond(DateTime time, bool utc = false)
8483 return ( int ) ( time - EpochLocal ) . TotalSeconds ;
8584 }
8685
87- /// <summary>
88- /// 当前时区时间 秒时间戳
89- /// </summary>
90- /// <returns>当前时区时间的秒时间戳。</returns>
91- public static long TimeSeconds ( )
92- {
93- return new DateTimeOffset ( DateTime . Now ) . ToUnixTimeSeconds ( ) ;
94- }
9586
9687 /// <summary>
9788 /// 将Unix时间戳转换为自公元1年1月1日以来的刻度数。
@@ -125,60 +116,138 @@ public static long TimestampMillisToTicks(long timestampMillisSeconds)
125116 public static TimeSpan TimeSpanWithTimestamp ( long timestamp )
126117 {
127118 // 计算当前时间与给定时间戳表示的时间之间的差值
128- var timeSpan = MillisToDateTime ( UnixTimeMilliseconds ( ) , true ) - MillisToDateTime ( timestamp , true ) ;
119+ var timeSpan = MillisecondsTimeStampToDateTime ( UnixTimeMilliseconds ( ) , true ) - MillisecondsTimeStampToDateTime ( timestamp , true ) ;
120+ return timeSpan ;
121+ }
122+
123+ /// <summary>
124+ /// 将给定的时间戳转换为相对于当前本地时间的 TimeSpan 对象。
125+ /// </summary>
126+ /// <param name="timestamp">自某个固定时间点(通常为1970年1月1日午夜)以来经过的毫秒数。</param>
127+ /// <returns>一个 TimeSpan 对象,表示从给定时间戳到当前本地时间的间隔。</returns>
128+ public static TimeSpan TimeSpanLocalWithTimestamp ( long timestamp )
129+ {
130+ // 计算当前时间与给定时间戳表示的时间之间的差值
131+ var timeSpan = DateTime . Now - MillisecondsTimeStampToDateTime ( timestamp , true ) ;
129132 return timeSpan ;
130133 }
131134
132135 /// <summary>
133136 /// 毫秒转时间
134137 /// </summary>
135- /// <param name="time">毫秒数。</param>
138+ /// <param name="timestamp">毫秒时间戳。</param>
139+ /// <param name="utc">是否使用UTC时间。</param>
140+ /// <returns>转换后的时间。</returns>
141+ public static DateTime MillisecondsTimeStampToDateTime ( long timestamp , bool utc = false )
142+ {
143+ if ( utc )
144+ {
145+ return EpochUtc . AddMilliseconds ( timestamp ) ;
146+ }
147+
148+ return EpochLocal . AddMilliseconds ( timestamp ) ;
149+ }
150+
151+ /// <summary>
152+ /// 秒时间戳转时间
153+ /// </summary>
154+ /// <param name="timestamp">秒时间戳。</param>
136155 /// <param name="utc">是否使用UTC时间。</param>
137156 /// <returns>转换后的时间。</returns>
138- public static DateTime MillisToDateTime ( long time , bool utc = false )
157+ public static DateTime TimestampToDateTime ( long timestamp , bool utc = false )
139158 {
140159 if ( utc )
141160 {
142- return EpochUtc . AddMilliseconds ( time ) ;
161+ return EpochUtc . AddSeconds ( timestamp ) ;
143162 }
144163
145- return EpochLocal . AddMilliseconds ( time ) ;
164+ return EpochLocal . AddSeconds ( timestamp ) ;
165+ }
166+
167+ /// <summary>
168+ /// 获取从指定日期到当前UTC日期之间跨越的天数。
169+ /// </summary>
170+ /// <param name="startTime">起始日期。</param>
171+ /// <param name="hour">小时。</param>
172+ /// <returns>跨越的天数。</returns>
173+ public static int GetCrossDays ( DateTime startTime , int hour = 0 )
174+ {
175+ return GetCrossDays ( startTime , DateTime . UtcNow , hour ) ;
176+ }
177+
178+ /// <summary>
179+ /// 获取从指定日期到当前本地日期之间跨越的天数。
180+ /// </summary>
181+ /// <param name="startTime">起始日期。</param>
182+ /// <param name="hour">小时。</param>
183+ /// <returns>跨越的天数。</returns>
184+ public static int GetCrossLocalDays ( DateTime startTime , int hour = 0 )
185+ {
186+ return GetCrossDays ( startTime , DateTime . Now , hour ) ;
187+ }
188+
189+ /// <summary>
190+ /// 获取两个时间戳之间跨越的天数。
191+ /// </summary>
192+ /// <param name="beginTimestamp">起始时间戳,从1970年1月1日以来经过的秒数。</param>
193+ /// <param name="hour">小时。</param>
194+ /// <returns>跨越的天数。</returns>
195+ public static int GetCrossDays ( long beginTimestamp , int hour = 0 )
196+ {
197+ var begin = TimestampToDateTime ( beginTimestamp ) ;
198+ return GetCrossDays ( begin , hour ) ;
146199 }
147200
148201 /// <summary>
149- /// 获取从指定日期到当前日期之间跨越的天数 。
202+ /// 获取两个UTC时间戳之间跨越的天数 。
150203 /// </summary>
151- /// <param name="begin">起始日期。</param>
204+ /// <param name="beginTimestamp">开始时间戳(秒),从1970年1月1日以来经过的秒数。</param>
205+ /// <param name="afterTimestamp">结束时间戳(秒),从1970年1月1日以来经过的秒数。</param>
152206 /// <param name="hour">小时。</param>
153207 /// <returns>跨越的天数。</returns>
154- public static int GetCrossDays ( DateTime begin , int hour = 0 )
208+ public static int GetCrossDays ( long beginTimestamp , long afterTimestamp , int hour = 0 )
155209 {
156- return GetCrossDays ( begin , DateTime . Now , hour ) ;
210+ var begin = UtcToUtcDateTime ( beginTimestamp ) ;
211+ var after = UtcToUtcDateTime ( afterTimestamp ) ;
212+ return GetCrossDays ( begin , after , hour ) ;
157213 }
158214
159215 /// <summary>
160216 /// 获取两个日期之间跨越的天数。
161217 /// </summary>
162- /// <param name="begin ">起始日期。</param>
163- /// <param name="after ">结束日期。</param>
218+ /// <param name="startTime ">起始日期。</param>
219+ /// <param name="endTime ">结束日期。</param>
164220 /// <param name="hour">小时。</param>
165221 /// <returns>跨越的天数。</returns>
166- public static int GetCrossDays ( DateTime begin , DateTime after , int hour = 0 )
222+ public static int GetCrossDays ( DateTime startTime , DateTime endTime , int hour = 0 )
167223 {
168- var days = ( int ) ( after . Date - begin . Date ) . TotalDays ;
169- if ( begin . Hour < hour )
224+ var days = ( int ) ( endTime . Date - startTime . Date ) . TotalDays ;
225+ if ( startTime . Hour < hour )
170226 {
171227 days ++ ;
172228 }
173229
174- if ( after . Hour < hour )
230+ if ( endTime . Hour < hour )
175231 {
176232 days -- ;
177233 }
178234
179235 return days ;
180236 }
181237
238+ /// <summary>
239+ /// 获取两个本地时间戳之间的间隔天数
240+ /// </summary>
241+ /// <param name="startTimestamp">开始时间戳(秒)</param>
242+ /// <param name="endTimestamp">结束时间戳(秒)</param>
243+ /// <returns>间隔天数</returns>
244+ public static int GetCrossLocalDays ( long startTimestamp , long endTimestamp )
245+ {
246+ var startTime = UtcToLocalDateTime ( startTimestamp ) ;
247+ var endTime = UtcToLocalDateTime ( endTimestamp ) ;
248+ return GetCrossDays ( startTime , endTime ) ;
249+ }
250+
182251 /// <summary>
183252 /// 判断当前时间是否与指定时间处于同一周。
184253 /// </summary>
@@ -329,6 +398,16 @@ public static DateTime UtcToUtcDateTime(long utcTimestamp)
329398 return DateTimeOffset . FromUnixTimeSeconds ( utcTimestamp ) . UtcDateTime ;
330399 }
331400
401+ /// <summary>
402+ /// UTC 毫秒时间戳 转换成UTC时间
403+ /// </summary>
404+ /// <param name="utcTimestampMilliseconds">UTC时间戳,单位毫秒</param>
405+ /// <returns>转换后的UTC时间。</returns>
406+ public static DateTime UtcMillisecondsToUtcDateTime ( long utcTimestampMilliseconds )
407+ {
408+ return DateTimeOffset . FromUnixTimeMilliseconds ( utcTimestampMilliseconds ) . UtcDateTime ;
409+ }
410+
332411 /// <summary>
333412 /// UTC 时间戳 转换成本地时间
334413 /// </summary>
@@ -339,6 +418,16 @@ public static DateTime UtcToLocalDateTime(long utcTimestamp)
339418 return DateTimeOffset . FromUnixTimeSeconds ( utcTimestamp ) . LocalDateTime ;
340419 }
341420
421+ /// <summary>
422+ /// UTC 毫秒时间戳 转换成本地时间
423+ /// </summary>
424+ /// <param name="utcTimestampMilliseconds">UTC时间戳,单位毫秒</param>
425+ /// <returns>转换后的本地时间。</returns>
426+ public static DateTime UtcMillisecondsToDateTime ( long utcTimestampMilliseconds )
427+ {
428+ return DateTimeOffset . FromUnixTimeMilliseconds ( utcTimestampMilliseconds ) . LocalDateTime ;
429+ }
430+
342431 /// <summary>
343432 /// 按照UTC时间判断两个时间戳是否是同一天
344433 /// </summary>
@@ -661,42 +750,6 @@ public static long GetEndTimestampOfYear(DateTime date)
661750 return new DateTimeOffset ( GetEndTimeOfYear ( date ) ) . ToUnixTimeSeconds ( ) ;
662751 }
663752
664- /// <summary>
665- /// 获取两个时间之间的间隔天数
666- /// </summary>
667- /// <param name="startTime">开始时间</param>
668- /// <param name="endTime">结束时间</param>
669- /// <returns>间隔天数</returns>
670- public static int GetDaysBetween ( DateTime startTime , DateTime endTime )
671- {
672- return ( int ) ( endTime . Date - startTime . Date ) . TotalDays ;
673- }
674-
675- /// <summary>
676- /// 获取两个UTC时间戳之间的间隔天数
677- /// </summary>
678- /// <param name="startTimestamp">开始时间戳(秒)</param>
679- /// <param name="endTimestamp">结束时间戳(秒)</param>
680- /// <returns>间隔天数</returns>
681- public static int GetDaysBetween ( long startTimestamp , long endTimestamp )
682- {
683- var startTime = UtcToUtcDateTime ( startTimestamp ) ;
684- var endTime = UtcToUtcDateTime ( endTimestamp ) ;
685- return GetDaysBetween ( startTime , endTime ) ;
686- }
687-
688- /// <summary>
689- /// 获取两个本地时间戳之间的间隔天数
690- /// </summary>
691- /// <param name="startTimestamp">开始时间戳(秒)</param>
692- /// <param name="endTimestamp">结束时间戳(秒)</param>
693- /// <returns>间隔天数</returns>
694- public static int GetLocalDaysBetween ( long startTimestamp , long endTimestamp )
695- {
696- var startTime = UtcToLocalDateTime ( startTimestamp ) ;
697- var endTime = UtcToLocalDateTime ( endTimestamp ) ;
698- return GetDaysBetween ( startTime , endTime ) ;
699- }
700753
701754 /// <summary>
702755 /// 获取指定时间是否在指定的时间范围内
0 commit comments