python3:移至给定时间的最近一次发生

时间:2018-09-12 19:05:52

标签: python python-3.x datetime

我正在尝试将datetime对象更改为给定时间的最近一次出现。因此,例如,如果datetime对象为datetime(2018,9,12,15,0,0),而我想转到time(12,0),则结果应为datetime(2018,9,12,12,0,0)。但是,如果我想去time(20,0),那么结果应该是datetime(2018,9,11,20,0,0)

我能想到的最好的方法是(假装几秒钟和几毫秒无关紧要):

def adjust(datetime_obj, time_obj):
  if datetime_obj.time() < time_obj:
    datetime_obj -= relativedelta(days=1)
  datetime_obj -= relativedelta(hour=time_obj.hour, minute=time_obj.minute)

有没有可以为我处理此操作的库?这似乎是一件相对简单的事情,也是一个相对普通的用例。我惊讶地发现datetime.timedeltadateutil.relativedelta都无法做到这一点。

为了进一步说明这一点,我还想说一种“去最近的星期三12:00”。因此,如果今天是星期三10:00,它将回滚一周,但是如果今天是星期三13:00,它将回滚一个小时。

0 个答案:

没有答案