@@ -238,9 +238,13 @@ public static int GetCrossDays(DateTime startTime, DateTime endTime, int hour =
238238 /// <summary>
239239 /// 获取两个本地时间戳之间的间隔天数
240240 /// </summary>
241- /// <param name="startTimestamp">开始时间戳(秒)</param>
242- /// <param name="endTimestamp">结束时间戳(秒)</param>
243- /// <returns>间隔天数</returns>
241+ /// <param name="startTimestamp">开始时间戳(秒),UTC时间戳将被转换为本地时间</param>
242+ /// <param name="endTimestamp">结束时间戳(秒),UTC时间戳将被转换为本地时间</param>
243+ /// <returns>间隔天数,如果开始时间晚于结束时间,返回负数</returns>
244+ /// <remarks>
245+ /// 此方法会先将UTC时间戳转换为本地时间,然后计算两个本地时间之间的天数差
246+ /// 计算时会考虑日期的时分秒部分
247+ /// </remarks>
244248 public static int GetCrossLocalDays ( long startTimestamp , long endTimestamp )
245249 {
246250 var startTime = UtcToLocalDateTime ( startTimestamp ) ;
@@ -251,29 +255,44 @@ public static int GetCrossLocalDays(long startTimestamp, long endTimestamp)
251255 /// <summary>
252256 /// 判断当前时间是否与指定时间处于同一周。
253257 /// </summary>
254- /// <param name="start">指定时间的起始时间。 </param>
258+ /// <param name="start">指定时间的起始时间(Ticks)。表示自 0001 年 1 月 1 日午夜 00:00:00 以来所经过的时钟周期数 </param>
255259 /// <returns>如果当前时间与指定时间处于同一周,则为 true;否则为 false。</returns>
260+ /// <remarks>
261+ /// 此方法将传入的ticks转换为DateTime后与当前时间比较是否在同一周
262+ /// 使用系统默认的周计算规则(周日为每周第一天)
263+ /// </remarks>
256264 public static bool IsNowSameWeek ( long start )
257265 {
258266 return IsNowSameWeek ( new DateTime ( start ) ) ;
259267 }
260268
261269 /// <summary>
262270 /// 判断当前时间是否与指定时间处于同一周。
271+ /// 以周一为每周的第一天,周日为每周的最后一天。
272+ /// 使用本地时间(DateTime.Now)进行比较。
263273 /// </summary>
264- /// <param name="start">指定时间的起始时间。</param>
274+ /// <param name="start">指定时间的起始时间。可以是任意DateTime值。 </param>
265275 /// <returns>如果当前时间与指定时间处于同一周,则为 true;否则为 false。</returns>
276+ /// <remarks>
277+ /// 此方法将调用IsSameWeek方法进行实际比较。
278+ /// 使用本地时区时间作为当前时间参考点。
279+ /// </remarks>
266280 public static bool IsNowSameWeek ( DateTime start )
267281 {
268282 return IsSameWeek ( start , DateTime . Now ) ;
269283 }
270284
271285 /// <summary>
272286 /// 判断两个时间是否处于同一周。
287+ /// 以周一为每周的第一天,周日为每周的最后一天。
273288 /// </summary>
274- /// <param name="start">起始时间。</param>
275- /// <param name="end">结束时间。</param>
289+ /// <param name="start">起始时间。可以是任意DateTime值。 </param>
290+ /// <param name="end">结束时间。可以是任意DateTime值。 </param>
276291 /// <returns>如果两个时间处于同一周,则为 true;否则为 false。</returns>
292+ /// <remarks>
293+ /// 此方法会自动调整参数顺序,确保start是较早的时间。
294+ /// 通过计算较早时间所在周的周日时间点,判断另一个时间是否在同一周内。
295+ /// </remarks>
277296 public static bool IsSameWeek ( DateTime start , DateTime end )
278297 {
279298 // 让start是较早的时间
@@ -297,31 +316,42 @@ public static bool IsSameWeek(DateTime start, DateTime end)
297316 /// <summary>
298317 /// 获取指定日期所在星期的时间。
299318 /// </summary>
300- /// <param name="dateTime">指定日期。</param>
301- /// <param name="day">星期几。</param>
302- /// <returns>指定日期所在星期的时间。</returns>
319+ /// <param name="dateTime">指定日期。例如:2024-01-10</param>
320+ /// <param name="day">星期几。例如:DayOfWeek.Monday 表示星期一,DayOfWeek.Sunday 表示星期日</param>
321+ /// <returns>返回指定日期所在星期的指定星期几的零点时间。例如:dateTime为2024-01-10(星期三),day为DayOfWeek.Monday,则返回2024-01-08 00:00:00</returns>
322+ /// <remarks>
323+ /// 此方法将星期日(DayOfWeek.Sunday)视为每周的第7天,而不是第0天
324+ /// 返回的时间总是该日期的零点时间(00:00:00)
325+ /// </remarks>
303326 public static DateTime GetDayOfWeekTime ( DateTime dateTime , DayOfWeek day )
304327 {
328+ // 将星期几转换为数字(1-7),将星期日从0转换为7
305329 var dd = ( int ) day ;
306330 if ( dd == 0 )
307331 {
308332 dd = 7 ;
309333 }
310334
335+ // 获取指定日期是星期几(1-7),将星期日从0转换为7
311336 var dayOfWeek = ( int ) dateTime . DayOfWeek ;
312337 if ( dayOfWeek == 0 )
313338 {
314339 dayOfWeek = 7 ;
315340 }
316341
342+ // 计算目标日期与当前日期的天数差,并返回目标日期的零点时间
317343 return dateTime . AddDays ( dd - dayOfWeek ) . Date ;
318344 }
319345
320346 /// <summary>
321347 /// 获取当前日期所在星期的时间。
322348 /// </summary>
323- /// <param name="day">星期几。</param>
324- /// <returns>当前日期所在星期的时间。</returns>
349+ /// <param name="day">星期几。例如:DayOfWeek.Monday 表示星期一,DayOfWeek.Sunday 表示星期日。</param>
350+ /// <returns>返回当前UTC日期所在星期的指定星期几的零点时间。例如:当前是2024-01-10(星期三),传入DayOfWeek.Monday,则返回2024-01-08 00:00:00。</returns>
351+ /// <remarks>
352+ /// 此方法使用UTC时间作为基准计算。
353+ /// 如果需要使用本地时间,请使用 GetDayOfWeekTime(DateTime.Now, day)。
354+ /// </remarks>
325355 public static DateTime GetDayOfWeekTime ( DayOfWeek day )
326356 {
327357 return GetDayOfWeekTime ( DateTime . Now , day ) ;
0 commit comments