Ceil a datetime to next quarter of an hour

后端 未结 6 1443
花落未央
花落未央 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:15

    Here is my code working with any periods:

    def floorDT(dt, secperiod):
        tstmp = dt.timestamp()
        return datetime.datetime.fromtimestamp(
            math.floor(tstmp/secperiod)*secperiod).astimezone().astimezone(datetime.timezone.utc)
    
    
    def ceilDT(dt, secperiod):
        tstmp = dt.timestamp()
        return datetime.datetime.fromtimestamp(
            math.ceil(tstmp/secperiod)*secperiod).astimezone().astimezone(datetime.timezone.utc)
    

    Note: we must use astimezone().astimezone() trick else it uses local timezone during converting from timestamp

提交回复
热议问题