Ceil a datetime to next quarter of an hour

后端 未结 6 1457
花落未央
花落未央 2020-12-03 07:38

Let\'s imagine this datetime

>>> import datetime
>>> dt = datetime.datetime(2012, 10, 25, 17, 32, 16)

I\'d l

6条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-03 08:00

    def ceil(dt):
        if dt.minute % 15 or dt.second:
            return dt + datetime.timedelta(minutes = 15 - dt.minute % 15,
                                           seconds = -(dt.second % 60))
        else:
            return dt
    

    This gives you:

    >>> ceil(datetime.datetime(2012,10,25, 17,45))
    datetime.datetime(2012, 10, 25, 17, 45)
    >>> ceil(datetime.datetime(2012,10,25, 17,45,1))
    datetime.datetime(2012, 10, 25, 18, 0)
    >>> ceil(datetime.datetime(2012,12,31,23,59,0))
    datetime.datetime(2013,1,1,0,0)
    

提交回复
热议问题