@@ -180,7 +180,7 @@ def run(self):
180180 # set activeToday to false if entry is in the future (and wasn't reset correctly at midnight)
181181 for i , entry in enumerate (self ._items [item ].get ('list' )):
182182 next , _ , _ = self ._get_time (entry , 'next' , item , i , 'dry_run' )
183- if next and next .time () > datetime .now ().time () and entry .get ('activeToday' ):
183+ if next and next .time () > datetime .now (self . _timezone ).time () and entry .get ('activeToday' ):
184184 entry ['activeToday' ] = False
185185 update = 'activeToday'
186186 self .logger .debug (
@@ -1085,7 +1085,7 @@ def _get_time(self, entry, timescan, item=None, entryindex=None, caller=None):
10851085 self ._ignore_once_entries is False and entry .get ('activeToday' ) is True and timescan == 'previous'
10861086 )
10871087 active = True if caller == 'dry_run' or cond_activetoday else entry .get ('active' )
1088- today = datetime .today ( )
1088+ today = datetime .now ( self . _timezone )
10891089 tomorrow = today + timedelta (days = 1 )
10901090 yesterday = today - timedelta (days = 1 )
10911091 weekbefore = today - timedelta (days = 7 )
@@ -1123,7 +1123,7 @@ def _get_time(self, entry, timescan, item=None, entryindex=None, caller=None):
11231123 rrule = rrulestr (entry ['rrule' ], dtstart = datetime .combine (weekbefore , datetime .min .time ()))
11241124 rstr = str (rrule ).replace ('\n ' , ';' )
11251125 self .logger .debug (f'{ item } : Looking for { timescan } time. Found rrule: { rstr } ' )
1126- dt = datetime .now ()
1126+ dt = datetime .now (self . _timezone ). replace ( tzinfo = None )
11271127 while self .alive :
11281128 dt = rrule .before (dt ) if timescan == 'previous' else rrule .after (dt )
11291129 if dt is None :
@@ -1145,12 +1145,12 @@ def _get_time(self, entry, timescan, item=None, entryindex=None, caller=None):
11451145 self ._update_suncalc (item , entry , entryindex , None )
11461146 compare_date = None if not next else next .date () - timedelta (days = 1 ) if next_day else next .date ()
11471147 if next and compare_date == dt .date ():
1148- cond_istoday = next .date () == datetime .now ().date ()
1148+ cond_istoday = next .date () == datetime .now (self . _timezone ).date ()
11491149 if caller != 'dry_run' and (
11501150 not self ._items [item ]['interpolation' ].get ('perday' ) or cond_istoday
11511151 ):
11521152 self ._itpl [item ][next .timestamp () * 1000.0 ] = value
1153- if next - timedelta (seconds = 1 ) > datetime .now (). replace ( tzinfo = self ._timezone ):
1153+ if next - timedelta (seconds = 1 ) > datetime .now (self ._timezone ):
11541154 self .logger .debug (f'{ item } : Return from rrule { timescan } : { next } , value { value } .' )
11551155 return next , value , None
11561156 else :
@@ -1162,7 +1162,7 @@ def _get_time(self, entry, timescan, item=None, entryindex=None, caller=None):
11621162 datetime .combine (today , datetime .min .time ()).replace (tzinfo = self ._timezone ), time , timescan
11631163 )
11641164 cond_future = next > datetime .now (self ._timezone )
1165- cond_istoday = next .date () == datetime .now ().date ()
1165+ cond_istoday = next .date () == datetime .now (self . _timezone ).date ()
11661166 if cond_future :
11671167 self .logger .debug (f'{ item } : Result parsing time today (sun) { time } : { next } ' )
11681168 if entryindex is not None :
@@ -1191,7 +1191,7 @@ def _get_time(self, entry, timescan, item=None, entryindex=None, caller=None):
11911191 next = self ._series_get_time (entry , timescan )
11921192 if next is None :
11931193 return None , None , False
1194- cond_istoday = next .date () == datetime .now ().date ()
1194+ cond_istoday = next .date () == datetime .now (self . _timezone ).date ()
11951195 if caller != 'dry_run' and (not self ._items [item ]['interpolation' ].get ('perday' ) or cond_istoday ):
11961196 self ._itpl [item ][next .timestamp () * 1000.0 ] = value
11971197 self .logger .debug (f'{ item } : Include { timescan } of series: { next } for interpolation.' )
@@ -1295,9 +1295,7 @@ def _series_calculate(self, item, caller=None, source=None):
12951295 starttime = datetime .strptime (mydict ['series' ]['timeSeriesMin' ], '%H:%M' )
12961296 else :
12971297 mytime = self ._sun (
1298- datetime .now ().replace (hour = 0 , minute = 0 , second = 0 ).astimezone (self ._timezone ),
1299- seriesstart ,
1300- 'next' ,
1298+ datetime .now (self ._timezone ).replace (hour = 0 , minute = 0 , second = 0 ), seriesstart , 'next'
13011299 )
13021300 starttime = f'{ mytime .hour :02d} :{ mytime .minute :02d} '
13031301 starttime = datetime .strptime (starttime , '%H:%M' )
@@ -1309,9 +1307,7 @@ def _series_calculate(self, item, caller=None, source=None):
13091307
13101308 if seriesend is not None and 'sun' in seriesend :
13111309 mytime = self ._sun (
1312- datetime .now ().replace (hour = 0 , minute = 0 , second = 0 ).astimezone (self ._timezone ),
1313- seriesend ,
1314- 'next' ,
1310+ datetime .now (self ._timezone ).replace (hour = 0 , minute = 0 , second = 0 ), seriesend , 'next'
13151311 )
13161312 endtime = f'{ mytime .hour :02d} :{ mytime .minute :02d} '
13171313 endtime = datetime .strptime (endtime , '%H:%M' )
@@ -1346,7 +1342,8 @@ def _series_calculate(self, item, caller=None, source=None):
13461342 rrule = rrulestr (
13471343 mydict ['rrule' ] + ';COUNT=7' ,
13481344 dtstart = datetime .combine (
1349- datetime .now (), parser .parse (str (starttime .hour ) + ':' + str (starttime .minute )).time ()
1345+ datetime .now (self ._timezone ),
1346+ parser .parse (str (starttime .hour ) + ':' + str (starttime .minute )).time (),
13501347 ),
13511348 )
13521349 mynewlist = []
@@ -1365,7 +1362,7 @@ def _series_calculate(self, item, caller=None, source=None):
13651362 else :
13661363 seriesstart = mydict ['series' ]['timeSeriesMin' ]
13671364 mytime = self ._sun (
1368- day .replace (hour = 0 , minute = 0 , second = 0 ). astimezone ( self ._timezone ), seriesstart , 'next'
1365+ day .replace (hour = 0 , minute = 0 , second = 0 , tzinfo = self ._timezone ), seriesstart , 'next'
13691366 )
13701367 starttime = f'{ mytime .hour :02d} :{ mytime .minute :02d} '
13711368 starttime = datetime .strptime (starttime , '%H:%M' )
@@ -1417,9 +1414,10 @@ def _series_calculate(self, item, caller=None, source=None):
14171414 count = 0
14181415 seriestarttime = None
14191416 actday = mydays [time .weekday ()]
1420- if time .time () < datetime .now ().time () and time .date () <= datetime .now ().date ():
1417+ now_local = datetime .now (self ._timezone ).replace (tzinfo = None )
1418+ if time .time () < now_local .time () and time .date () <= now_local .date ():
14211419 continue
1422- if time >= datetime . now () + timedelta (days = 7 ):
1420+ if time >= now_local + timedelta (days = 7 ):
14231421 continue
14241422 if seriestarttime is None :
14251423 seriestarttime = time
@@ -1470,7 +1468,7 @@ def _get_sun4week(self, item, caller=None):
14701468 """
14711469 dayrule = rrulestr (
14721470 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU' + ';COUNT=7' ,
1473- dtstart = datetime .now ().replace (hour = 0 , minute = 0 , second = 0 ),
1471+ dtstart = datetime .now (self . _timezone ).replace (hour = 0 , minute = 0 , second = 0 ),
14741472 )
14751473 self .logger .debug (f'Get sun4week for item { item } called by { caller } ' )
14761474 mynewdict = {'sunrise' : {}, 'sunset' : {}}
@@ -1525,17 +1523,13 @@ def _series_get_time(self, mydict, timescan=''):
15251523 if 'sun' not in mydict ['series' ]['timeSeriesMin' ]:
15261524 starttime = datetime .strptime (mydict ['series' ]['timeSeriesMin' ], '%H:%M' )
15271525 else :
1528- mytime = self ._sun (
1529- datetime .now ().replace (hour = 0 , minute = 0 , second = 0 ).astimezone (self ._timezone ), seriesstart , 'next'
1530- )
1526+ mytime = self ._sun (datetime .now (self ._timezone ).replace (hour = 0 , minute = 0 , second = 0 ), seriesstart , 'next' )
15311527 starttime = f'{ mytime .hour :02d} :{ mytime .minute :02d} '
15321528 starttime = datetime .strptime (starttime , '%H:%M' )
15331529
15341530 if daycount is None and seriesend is not None :
15351531 if 'sun' in seriesend :
1536- mytime = self ._sun (
1537- datetime .now ().replace (hour = 0 , minute = 0 , second = 0 ).astimezone (self ._timezone ), seriesend , 'next'
1538- )
1532+ mytime = self ._sun (datetime .now (self ._timezone ).replace (hour = 0 , minute = 0 , second = 0 ), seriesend , 'next' )
15391533 seriesend = f'{ mytime .hour :02d} :{ mytime .minute :02d} '
15401534 endtime = datetime .strptime (seriesend , '%H:%M' )
15411535 else :
@@ -1576,7 +1570,7 @@ def _series_get_time(self, mydict, timescan=''):
15761570 rrule = rrulestr (
15771571 actrrule ,
15781572 dtstart = datetime .combine (
1579- datetime .now () - timedelta (days = 7 ),
1573+ datetime .now (self . _timezone ) - timedelta (days = 7 ),
15801574 parser .parse (str (starttime .hour ) + ':' + str (starttime .minute )).time (),
15811575 ),
15821576 )
@@ -1589,7 +1583,7 @@ def _series_get_time(self, mydict, timescan=''):
15891583 mylist [timestamp ] = 'x'
15901584 mycount += 1
15911585
1592- now = datetime .now ()
1586+ now = datetime .now (self . _timezone ). replace ( tzinfo = None )
15931587 mylist [now ] = 'now'
15941588 mysortedlist = sorted (mylist )
15951589 myindex = mysortedlist .index (now )
@@ -1601,7 +1595,7 @@ def _series_get_time(self, mydict, timescan=''):
16011595 # Get correct "sun" for this Day
16021596 if 'sun' in mydict ['series' ]['timeSeriesMin' ] and returnvalue is not None :
16031597 mytime = self ._sun (
1604- returnvalue .replace (hour = 0 , minute = 0 , second = 0 ). astimezone ( self ._timezone ),
1598+ returnvalue .replace (hour = 0 , minute = 0 , second = 0 , tzinfo = self ._timezone ),
16051599 mydict ['series' ]['timeSeriesMin' ],
16061600 'next' ,
16071601 )
0 commit comments