如何设置明天上午10点的计时器

时间:2013-09-04 08:23:38

标签: python datetime timer timezone python-multithreading

我从类似问题的其他答案(https://stackoverflow.com/a/2031297/940208)中尝试了一些建议,到目前为止我所做的是:

t = datetime.datetime.today()
tomorrow = datetime.datetime(t.year,t.month,t.day+1,10,0)

问题是,当我们有一个月的最后一天时,这将失败:

ValueError: day is out of range for month

那么我怎样才能重写这个陈述(没有把它包装成IF条件试图找到它,这是最后一天)来包含这种情况呢?

另一个问题是 - 这样的计时器的时区是什么?我如何处理当前(系统)时区?

1 个答案:

答案 0 :(得分:1)

使用datetime.datetime.replacedatetime.timedelta

tomorrow = t.replace(hour=10, minute=0, second=0, microsecond=0) + \
           datetime.timedelta(days=1)

备选方案:

tomorrow = datetime.datetime.combine(t.date(), datetime.time(10)) + \
           datetime.timedelta(days=1)

tomorrow = datetime.datetime(t.year, t.month, t.day, 10) + \
           datetime.timedelta(days=1)