forked from
smokesignal.events/smokesignal
i18n+filtering fork - fluent-templates v2
1// Test program to debug date range calculations
2use chrono::{DateTime, Datelike, Utc, Weekday};
3
4fn main() {
5 // Simulate today being June 3, 2025 (Tuesday)
6 let now = DateTime::parse_from_rfc3339("2025-06-03T12:00:00Z").unwrap().with_timezone(&Utc);
7 println!("Today: {} ({})", now.format("%Y-%m-%d %A"), now.weekday());
8
9 // Calculate next week using the current logic
10 let days_until_next_monday = match now.weekday() {
11 Weekday::Mon => 7, // If today is Monday, next Monday is 7 days away
12 _ => 7 - now.weekday().num_days_from_monday(),
13 };
14
15 let start = (now + chrono::Duration::days(days_until_next_monday as i64))
16 .date_naive().and_hms_opt(0, 0, 0).unwrap().and_utc();
17 let end = start + chrono::Duration::days(6);
18 let end = end.date_naive().and_hms_opt(23, 59, 59).unwrap().and_utc();
19
20 println!("Next week range: {} to {}", start, end);
21
22 // Test the problematic event
23 let event_start = DateTime::parse_from_rfc3339("2025-05-28T22:00:00Z").unwrap().with_timezone(&Utc);
24 let event_end = DateTime::parse_from_rfc3339("2025-06-01T23:59:59Z").unwrap().with_timezone(&Utc);
25
26 println!("Event range: {} to {}", event_start, event_end);
27
28 // Test overlap logic: event_start <= filter_end AND event_end >= filter_start
29 let overlaps = event_start <= end && event_end >= start;
30 println!("Event overlaps with next week: {}", overlaps);
31
32 // Show the correct calculation for next week
33 let today = now.date_naive();
34 let days_until_monday = (7 - now.weekday().num_days_from_monday()) % 7;
35 let next_monday = if days_until_monday == 0 && now.weekday() != Weekday::Mon {
36 today + chrono::Duration::days(7)
37 } else {
38 today + chrono::Duration::days(days_until_monday as i64)
39 };
40
41 let correct_start = next_monday.and_hms_opt(0, 0, 0).unwrap().and_utc();
42 let correct_end = (next_monday + chrono::Duration::days(6)).and_hms_opt(23, 59, 59).unwrap().and_utc();
43
44 println!("CORRECTED next week range: {} to {}", correct_start, correct_end);
45
46 let correct_overlaps = event_start <= correct_end && event_end >= correct_start;
47 println!("Event overlaps with CORRECTED next week: {}", correct_overlaps);
48}