summaryrefslogtreecommitdiff
path: root/apscheduler/triggers/interval.py
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2013-07-27 18:07:45 +0300
committerAlex Grönholm <alex.gronholm@nextday.fi>2013-07-27 18:07:45 +0300
commit307e0f13220a465de8c1764e63cd4092272d95b4 (patch)
tree66d9ac3cc841d7c33dc67618c1b4295b2a9d6fe7 /apscheduler/triggers/interval.py
parenta1629b01f91ce0cbbfc0cbeeb283ca4011756c25 (diff)
downloadapscheduler-307e0f13220a465de8c1764e63cd4092272d95b4.tar.gz
Added timezone awareness
Diffstat (limited to 'apscheduler/triggers/interval.py')
-rw-r--r--apscheduler/triggers/interval.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/apscheduler/triggers/interval.py b/apscheduler/triggers/interval.py
index 5c3206a..03a9b8d 100644
--- a/apscheduler/triggers/interval.py
+++ b/apscheduler/triggers/interval.py
@@ -1,11 +1,11 @@
from datetime import datetime, timedelta
from math import ceil
-from apscheduler.util import convert_to_datetime, timedelta_seconds
+from apscheduler.util import convert_to_datetime, timedelta_seconds, datetime_repr
class IntervalTrigger(object):
- def __init__(self, weeks=0, days=0, hours=0, minutes=0, seconds=0, start_date=None):
+ def __init__(self, defaults, weeks=0, days=0, hours=0, minutes=0, seconds=0, start_date=None, timezone=None):
"""
Triggers on specified intervals.
@@ -15,7 +15,10 @@ class IntervalTrigger(object):
:param minutes: number of minutes to wait
:param seconds: number of seconds to wait
:param start_date: when to first execute the job and start the counter (default is after the given interval)
+ :param timezone: time zone for ``start_date``
+ :type timezone: str or an instance of a :cls:`~datetime.tzinfo` subclass
"""
+ timezone = timezone or defaults['timezone']
self.interval = timedelta(weeks=weeks, days=days, hours=hours, minutes=minutes, seconds=seconds)
self.interval_length = timedelta_seconds(self.interval)
if self.interval_length == 0:
@@ -23,9 +26,9 @@ class IntervalTrigger(object):
self.interval_length = 1
if start_date is None:
- self.start_date = datetime.now() + self.interval
+ self.start_date = datetime.now(timezone) + self.interval
else:
- self.start_date = convert_to_datetime(start_date)
+ self.start_date = convert_to_datetime(start_date, timezone, 'start_date')
def get_next_fire_time(self, start_date):
if start_date < self.start_date:
@@ -39,6 +42,5 @@ class IntervalTrigger(object):
return 'interval[%s]' % str(self.interval)
def __repr__(self):
- return "<%s (interval=%s, start_date=%s)>" % (
- self.__class__.__name__, repr(self.interval),
- repr(self.start_date))
+ return "<%s (interval=%r, start_date='%s')>" % (self.__class__.__name__, self.interval,
+ datetime_repr(self.start_date))