def has_fired(self, my_task):
dt = my_task.workflow.script_engine.evaluate(my_task, self.dateTime)<EOL>if dt is None:<EOL><INDENT>return False<EOL><DEDENT>if dt.tzinfo:<EOL><INDENT>tz = dt.tzinfo<EOL>now = tz.fromutc(datetime.datetime.utcnow().replace(tzinfo=tz))<EOL><DEDENT>else:<EOL><INDENT>now = datetime.datetime.now()<EOL><DEDENT>return now > dt<EOL>
The Timer is considered to have fired if the evaluated dateTime
expression is before datetime.datetime.now()