1
1
use std:: fmt:: Debug ;
2
2
use std:: sync:: { Arc , Mutex } ;
3
3
4
- use chrono:: { Local , NaiveDateTime } ;
4
+ use chrono:: { DateTime , Local } ;
5
5
use chrono_english:: { parse_date_string, parse_duration, DateError , Dialect , Interval } ;
6
6
use chronoutil:: RelativeDuration ;
7
7
use eden_dag:: nameset:: hints:: { Flags , Hints } ;
@@ -22,8 +22,8 @@ pub(super) enum Pattern {
22
22
Substring ( String ) ,
23
23
Glob ( glob:: Pattern ) ,
24
24
Regex ( regex:: Regex ) ,
25
- Before ( NaiveDateTime ) ,
26
- After ( NaiveDateTime ) ,
25
+ Before ( DateTime < Local > ) ,
26
+ After ( DateTime < Local > ) ,
27
27
}
28
28
29
29
#[ derive( Debug , Error ) ]
@@ -64,11 +64,11 @@ impl Pattern {
64
64
Pattern :: Exact ( _) | Pattern :: Substring ( _) | Pattern :: Glob ( _) | Pattern :: Regex ( _) => {
65
65
false
66
66
}
67
- Pattern :: Before ( date) => match time. to_naive_date_time ( ) {
67
+ Pattern :: Before ( date) => match time. to_date_time ( ) {
68
68
Some ( time) => & time <= date,
69
69
None => false ,
70
70
} ,
71
- Pattern :: After ( date) => match time. to_naive_date_time ( ) {
71
+ Pattern :: After ( date) => match time. to_date_time ( ) {
72
72
Some ( time) => & time >= date,
73
73
None => false ,
74
74
} ,
@@ -94,17 +94,17 @@ impl Pattern {
94
94
return Ok ( Pattern :: Regex ( pattern) ) ;
95
95
}
96
96
97
- fn parse_date ( pattern : & str ) -> Result < NaiveDateTime , PatternError > {
97
+ fn parse_date ( pattern : & str ) -> Result < DateTime < Local > , PatternError > {
98
98
if let Ok ( date) = parse_date_string ( pattern, Local :: now ( ) , Dialect :: Us ) {
99
- return Ok ( date. naive_local ( ) ) ;
99
+ return Ok ( date. with_timezone ( & Local ) ) ;
100
100
}
101
101
if let Ok ( interval) = parse_duration ( pattern) {
102
102
let delta = match interval {
103
103
Interval :: Seconds ( seconds) => RelativeDuration :: seconds ( seconds. into ( ) ) ,
104
104
Interval :: Days ( days) => RelativeDuration :: days ( days. into ( ) ) ,
105
105
Interval :: Months ( months) => RelativeDuration :: months ( months) ,
106
106
} ;
107
- let date = Local :: now ( ) . naive_local ( ) + delta;
107
+ let date = Local :: now ( ) + delta;
108
108
return Ok ( date) ;
109
109
}
110
110
Err ( PatternError :: ConstructMatcher ( eyre:: eyre!(
0 commit comments