Skip to content

Fix the issue of incorrect time range calculation across days #718

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

haoyang1994
Copy link
Contributor

@haoyang1994 haoyang1994 commented Jun 9, 2025

The current IsInRange() method produces incorrect results when the time range crosses midnight (StartTime > EndTime) and "Weekdays" is configured. For example, when Weekdays=[Sunday, Monday, Tuesday, Wednesday, Thursday], the system will incorrectly identify Friday's time period as not belonging to the time period.

Reproduce

Config:

		Weekdays:  []string{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"},
		StartTime: "19:00:00",
		EndTime:   "06:00:00",
		Timezone:  "America/New_York",

IsInRange() result before change:

[Sunday]2025-06-08 00:00:00 = true
[Sunday]2025-06-08 01:00:00 = true
[Sunday]2025-06-08 02:00:00 = true
[Sunday]2025-06-08 03:00:00 = true
[Sunday]2025-06-08 04:00:00 = true
[Sunday]2025-06-08 05:00:00 = true
[Sunday]2025-06-08 06:00:00 = true
[Sunday]2025-06-08 07:00:00 = false
[Sunday]2025-06-08 08:00:00 = false
[Sunday]2025-06-08 09:00:00 = false
[Sunday]2025-06-08 10:00:00 = false
[Sunday]2025-06-08 11:00:00 = false
[Sunday]2025-06-08 12:00:00 = false
[Sunday]2025-06-08 13:00:00 = false
[Sunday]2025-06-08 14:00:00 = false
[Sunday]2025-06-08 15:00:00 = false
[Sunday]2025-06-08 16:00:00 = false
[Sunday]2025-06-08 17:00:00 = false
[Sunday]2025-06-08 18:00:00 = false
[Sunday]2025-06-08 19:00:00 = true
[Sunday]2025-06-08 20:00:00 = true
[Sunday]2025-06-08 21:00:00 = true
[Sunday]2025-06-08 22:00:00 = true
[Sunday]2025-06-08 23:00:00 = true
[Monday]2025-06-09 00:00:00 = true
[Monday]2025-06-09 01:00:00 = true
[Monday]2025-06-09 02:00:00 = true
[Monday]2025-06-09 03:00:00 = true
[Monday]2025-06-09 04:00:00 = true
[Monday]2025-06-09 05:00:00 = true
[Monday]2025-06-09 06:00:00 = true
[Monday]2025-06-09 07:00:00 = false
[Monday]2025-06-09 08:00:00 = false
[Monday]2025-06-09 09:00:00 = false
[Monday]2025-06-09 10:00:00 = false
[Monday]2025-06-09 11:00:00 = false
[Monday]2025-06-09 12:00:00 = false
[Monday]2025-06-09 13:00:00 = false
[Monday]2025-06-09 14:00:00 = false
[Monday]2025-06-09 15:00:00 = false
[Monday]2025-06-09 16:00:00 = false
[Monday]2025-06-09 17:00:00 = false
[Monday]2025-06-09 18:00:00 = false
[Monday]2025-06-09 19:00:00 = true
[Monday]2025-06-09 20:00:00 = true
[Monday]2025-06-09 21:00:00 = true
[Monday]2025-06-09 22:00:00 = true
[Monday]2025-06-09 23:00:00 = true
[Tuesday]2025-06-10 00:00:00 = true
[Tuesday]2025-06-10 01:00:00 = true
[Tuesday]2025-06-10 02:00:00 = true
[Tuesday]2025-06-10 03:00:00 = true
[Tuesday]2025-06-10 04:00:00 = true
[Tuesday]2025-06-10 05:00:00 = true
[Tuesday]2025-06-10 06:00:00 = true
[Tuesday]2025-06-10 07:00:00 = false
[Tuesday]2025-06-10 08:00:00 = false
[Tuesday]2025-06-10 09:00:00 = false
[Tuesday]2025-06-10 10:00:00 = false
[Tuesday]2025-06-10 11:00:00 = false
[Tuesday]2025-06-10 12:00:00 = false
[Tuesday]2025-06-10 13:00:00 = false
[Tuesday]2025-06-10 14:00:00 = false
[Tuesday]2025-06-10 15:00:00 = false
[Tuesday]2025-06-10 16:00:00 = false
[Tuesday]2025-06-10 17:00:00 = false
[Tuesday]2025-06-10 18:00:00 = false
[Tuesday]2025-06-10 19:00:00 = true
[Tuesday]2025-06-10 20:00:00 = true
[Tuesday]2025-06-10 21:00:00 = true
[Tuesday]2025-06-10 22:00:00 = true
[Tuesday]2025-06-10 23:00:00 = true
[Wednesday]2025-06-11 00:00:00 = true
[Wednesday]2025-06-11 01:00:00 = true
[Wednesday]2025-06-11 02:00:00 = true
[Wednesday]2025-06-11 03:00:00 = true
[Wednesday]2025-06-11 04:00:00 = true
[Wednesday]2025-06-11 05:00:00 = true
[Wednesday]2025-06-11 06:00:00 = true
[Wednesday]2025-06-11 07:00:00 = false
[Wednesday]2025-06-11 08:00:00 = false
[Wednesday]2025-06-11 09:00:00 = false
[Wednesday]2025-06-11 10:00:00 = false
[Wednesday]2025-06-11 11:00:00 = false
[Wednesday]2025-06-11 12:00:00 = false
[Wednesday]2025-06-11 13:00:00 = false
[Wednesday]2025-06-11 14:00:00 = false
[Wednesday]2025-06-11 15:00:00 = false
[Wednesday]2025-06-11 16:00:00 = false
[Wednesday]2025-06-11 17:00:00 = false
[Wednesday]2025-06-11 18:00:00 = false
[Wednesday]2025-06-11 19:00:00 = true
[Wednesday]2025-06-11 20:00:00 = true
[Wednesday]2025-06-11 21:00:00 = true
[Wednesday]2025-06-11 22:00:00 = true
[Wednesday]2025-06-11 23:00:00 = true
[Thursday]2025-06-12 00:00:00 = true
[Thursday]2025-06-12 01:00:00 = true
[Thursday]2025-06-12 02:00:00 = true
[Thursday]2025-06-12 03:00:00 = true
[Thursday]2025-06-12 04:00:00 = true
[Thursday]2025-06-12 05:00:00 = true
[Thursday]2025-06-12 06:00:00 = true
[Thursday]2025-06-12 07:00:00 = false
[Thursday]2025-06-12 08:00:00 = false
[Thursday]2025-06-12 09:00:00 = false
[Thursday]2025-06-12 10:00:00 = false
[Thursday]2025-06-12 11:00:00 = false
[Thursday]2025-06-12 12:00:00 = false
[Thursday]2025-06-12 13:00:00 = false
[Thursday]2025-06-12 14:00:00 = false
[Thursday]2025-06-12 15:00:00 = false
[Thursday]2025-06-12 16:00:00 = false
[Thursday]2025-06-12 17:00:00 = false
[Thursday]2025-06-12 18:00:00 = false
[Thursday]2025-06-12 19:00:00 = true
[Thursday]2025-06-12 20:00:00 = true
[Thursday]2025-06-12 21:00:00 = true
[Thursday]2025-06-12 22:00:00 = true
[Thursday]2025-06-12 23:00:00 = true
[Friday]2025-06-13 00:00:00 = false
[Friday]2025-06-13 01:00:00 = false
[Friday]2025-06-13 02:00:00 = false
[Friday]2025-06-13 03:00:00 = false
[Friday]2025-06-13 04:00:00 = false
[Friday]2025-06-13 05:00:00 = false
[Friday]2025-06-13 06:00:00 = false
[Friday]2025-06-13 07:00:00 = false
[Friday]2025-06-13 08:00:00 = false
[Friday]2025-06-13 09:00:00 = false
[Friday]2025-06-13 10:00:00 = false
[Friday]2025-06-13 11:00:00 = false
[Friday]2025-06-13 12:00:00 = false
[Friday]2025-06-13 13:00:00 = false
[Friday]2025-06-13 14:00:00 = false
[Friday]2025-06-13 15:00:00 = false
[Friday]2025-06-13 16:00:00 = false
[Friday]2025-06-13 17:00:00 = false
[Friday]2025-06-13 18:00:00 = false
[Friday]2025-06-13 19:00:00 = false
[Friday]2025-06-13 20:00:00 = false
[Friday]2025-06-13 21:00:00 = false
[Friday]2025-06-13 22:00:00 = false
[Friday]2025-06-13 23:00:00 = false

IsInRange() result after change:

[Sunday]2025-06-08 00:00:00 = false
[Sunday]2025-06-08 01:00:00 = false
[Sunday]2025-06-08 02:00:00 = false
[Sunday]2025-06-08 03:00:00 = false
[Sunday]2025-06-08 04:00:00 = false
[Sunday]2025-06-08 05:00:00 = false
[Sunday]2025-06-08 06:00:00 = false
[Sunday]2025-06-08 07:00:00 = false
[Sunday]2025-06-08 08:00:00 = false
[Sunday]2025-06-08 09:00:00 = false
[Sunday]2025-06-08 10:00:00 = false
[Sunday]2025-06-08 11:00:00 = false
[Sunday]2025-06-08 12:00:00 = false
[Sunday]2025-06-08 13:00:00 = false
[Sunday]2025-06-08 14:00:00 = false
[Sunday]2025-06-08 15:00:00 = false
[Sunday]2025-06-08 16:00:00 = false
[Sunday]2025-06-08 17:00:00 = false
[Sunday]2025-06-08 18:00:00 = false
[Sunday]2025-06-08 19:00:00 = true
[Sunday]2025-06-08 20:00:00 = true
[Sunday]2025-06-08 21:00:00 = true
[Sunday]2025-06-08 22:00:00 = true
[Sunday]2025-06-08 23:00:00 = true
[Monday]2025-06-09 00:00:00 = true
[Monday]2025-06-09 01:00:00 = true
[Monday]2025-06-09 02:00:00 = true
[Monday]2025-06-09 03:00:00 = true
[Monday]2025-06-09 04:00:00 = true
[Monday]2025-06-09 05:00:00 = true
[Monday]2025-06-09 06:00:00 = true
[Monday]2025-06-09 07:00:00 = false
[Monday]2025-06-09 08:00:00 = false
[Monday]2025-06-09 09:00:00 = false
[Monday]2025-06-09 10:00:00 = false
[Monday]2025-06-09 11:00:00 = false
[Monday]2025-06-09 12:00:00 = false
[Monday]2025-06-09 13:00:00 = false
[Monday]2025-06-09 14:00:00 = false
[Monday]2025-06-09 15:00:00 = false
[Monday]2025-06-09 16:00:00 = false
[Monday]2025-06-09 17:00:00 = false
[Monday]2025-06-09 18:00:00 = false
[Monday]2025-06-09 19:00:00 = true
[Monday]2025-06-09 20:00:00 = true
[Monday]2025-06-09 21:00:00 = true
[Monday]2025-06-09 22:00:00 = true
[Monday]2025-06-09 23:00:00 = true
[Tuesday]2025-06-10 00:00:00 = true
[Tuesday]2025-06-10 01:00:00 = true
[Tuesday]2025-06-10 02:00:00 = true
[Tuesday]2025-06-10 03:00:00 = true
[Tuesday]2025-06-10 04:00:00 = true
[Tuesday]2025-06-10 05:00:00 = true
[Tuesday]2025-06-10 06:00:00 = true
[Tuesday]2025-06-10 07:00:00 = false
[Tuesday]2025-06-10 08:00:00 = false
[Tuesday]2025-06-10 09:00:00 = false
[Tuesday]2025-06-10 10:00:00 = false
[Tuesday]2025-06-10 11:00:00 = false
[Tuesday]2025-06-10 12:00:00 = false
[Tuesday]2025-06-10 13:00:00 = false
[Tuesday]2025-06-10 14:00:00 = false
[Tuesday]2025-06-10 15:00:00 = false
[Tuesday]2025-06-10 16:00:00 = false
[Tuesday]2025-06-10 17:00:00 = false
[Tuesday]2025-06-10 18:00:00 = false
[Tuesday]2025-06-10 19:00:00 = true
[Tuesday]2025-06-10 20:00:00 = true
[Tuesday]2025-06-10 21:00:00 = true
[Tuesday]2025-06-10 22:00:00 = true
[Tuesday]2025-06-10 23:00:00 = true
[Wednesday]2025-06-11 00:00:00 = true
[Wednesday]2025-06-11 01:00:00 = true
[Wednesday]2025-06-11 02:00:00 = true
[Wednesday]2025-06-11 03:00:00 = true
[Wednesday]2025-06-11 04:00:00 = true
[Wednesday]2025-06-11 05:00:00 = true
[Wednesday]2025-06-11 06:00:00 = true
[Wednesday]2025-06-11 07:00:00 = false
[Wednesday]2025-06-11 08:00:00 = false
[Wednesday]2025-06-11 09:00:00 = false
[Wednesday]2025-06-11 10:00:00 = false
[Wednesday]2025-06-11 11:00:00 = false
[Wednesday]2025-06-11 12:00:00 = false
[Wednesday]2025-06-11 13:00:00 = false
[Wednesday]2025-06-11 14:00:00 = false
[Wednesday]2025-06-11 15:00:00 = false
[Wednesday]2025-06-11 16:00:00 = false
[Wednesday]2025-06-11 17:00:00 = false
[Wednesday]2025-06-11 18:00:00 = false
[Wednesday]2025-06-11 19:00:00 = true
[Wednesday]2025-06-11 20:00:00 = true
[Wednesday]2025-06-11 21:00:00 = true
[Wednesday]2025-06-11 22:00:00 = true
[Wednesday]2025-06-11 23:00:00 = true
[Thursday]2025-06-12 00:00:00 = true
[Thursday]2025-06-12 01:00:00 = true
[Thursday]2025-06-12 02:00:00 = true
[Thursday]2025-06-12 03:00:00 = true
[Thursday]2025-06-12 04:00:00 = true
[Thursday]2025-06-12 05:00:00 = true
[Thursday]2025-06-12 06:00:00 = true
[Thursday]2025-06-12 07:00:00 = false
[Thursday]2025-06-12 08:00:00 = false
[Thursday]2025-06-12 09:00:00 = false
[Thursday]2025-06-12 10:00:00 = false
[Thursday]2025-06-12 11:00:00 = false
[Thursday]2025-06-12 12:00:00 = false
[Thursday]2025-06-12 13:00:00 = false
[Thursday]2025-06-12 14:00:00 = false
[Thursday]2025-06-12 15:00:00 = false
[Thursday]2025-06-12 16:00:00 = false
[Thursday]2025-06-12 17:00:00 = false
[Thursday]2025-06-12 18:00:00 = false
[Thursday]2025-06-12 19:00:00 = true
[Thursday]2025-06-12 20:00:00 = true
[Thursday]2025-06-12 21:00:00 = true
[Thursday]2025-06-12 22:00:00 = true
[Thursday]2025-06-12 23:00:00 = true
[Friday]2025-06-13 00:00:00 = true
[Friday]2025-06-13 01:00:00 = true
[Friday]2025-06-13 02:00:00 = true
[Friday]2025-06-13 03:00:00 = true
[Friday]2025-06-13 04:00:00 = true
[Friday]2025-06-13 05:00:00 = true
[Friday]2025-06-13 06:00:00 = true
[Friday]2025-06-13 07:00:00 = false
[Friday]2025-06-13 08:00:00 = false
[Friday]2025-06-13 09:00:00 = false
[Friday]2025-06-13 10:00:00 = false
[Friday]2025-06-13 11:00:00 = false
[Friday]2025-06-13 12:00:00 = false
[Friday]2025-06-13 13:00:00 = false
[Friday]2025-06-13 14:00:00 = false
[Friday]2025-06-13 15:00:00 = false
[Friday]2025-06-13 16:00:00 = false
[Friday]2025-06-13 17:00:00 = false
[Friday]2025-06-13 18:00:00 = false
[Friday]2025-06-13 19:00:00 = false
[Friday]2025-06-13 20:00:00 = false
[Friday]2025-06-13 21:00:00 = false
[Friday]2025-06-13 22:00:00 = false
[Friday]2025-06-13 23:00:00 = false

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant