2024-03-28 12:09:20 发布
网友
我有下面的代码。
我想把时间凑到一小时内最接近的30分钟。例如:12:00PM或12:30PM等等。
EASTERN_NOW = timezone.localtime(timezone.now() + timedelta(minutes=30)) TIME = datetime.time(EASTERN_NOW.time().hour, EASTERN_NOW.time().minute).strftime( VALID_TIME_FORMATS[2])
提前谢谢
你可以把你的分钟除以30,再乘以30得到0,30或60分钟:
date = datetime.datetime(2015, 9, 22, 12, 35) approx = round(date.minute/30.0) * 30 date = date.replace(minute=0) date += datetime.timedelta(seconds=approx * 60) time = date.time() print(time.strftime('%H:%M')) # prints '13:30'
我正在使用datetime对象,因为timedelta不适用于时间对象。最后,您可以使用date.time()获得时间。
date.time()
将向上取整至最接近的30分钟:
#!/usr/bin/env python3 from datetime import datetime, timedelta def ceil_dt(dt, delta): return dt + (datetime.min - dt) % delta now = datetime.now() print(now) print(ceil_dt(now, timedelta(minutes=30)))
The formula is suggested by @Mark Dickinson (for a different question)。
2015-09-22 19:08:34.839915 2015-09-22 19:30:00
注意:如果输入是时区感知的datetime对象,例如EASTERN_NOW,则如果要保留舍入的本地时间并附加正确的tzinfo,则应调用timezone.make_aware(rounded_dt.replace(tzinfo=None)),否则,如果舍入跨越DST边界,则可能会得到错误的时区信息。或者为了避免不明确的本地时间失败,请手动调用.localize():
EASTERN_NOW
timezone.make_aware(rounded_dt.replace(tzinfo=None))
.localize()
localize = getattr(rounded_dt.tzinfo, 'localize', None) if localize: rounded_dt = localize(rounded_dt.replace(tzinfo=None), is_dst=bool(rounded_dt.dst()))
你可以把日期时间输入分开,然后调整时间
def ajustTime(): from datetime import datetime mytime= datetime.now().strftime("%Y-%m-%d %H-%M") m = mytime.split() hours, mints = m[1].split('-') if 15 <= int(mints) <= 45: mints = ':30' elif int(mints) < 15: mints = ':00' elif int(mints) > 45: mints = ':00' h = int(hours) + 1 hours = str(h) print(m[0] + " " + hours + mints)
调整时间()
输出
2015-09-22 15:42:03.587633
2015-09-22 15:30
2015-09-22 15:46:01.956860
2015-09-22 16:00
你可以把你的分钟除以30,再乘以30得到0,30或60分钟:
我正在使用datetime对象,因为timedelta不适用于时间对象。最后,您可以使用
date.time()
获得时间。将向上取整至最接近的30分钟:
The formula is suggested by @Mark Dickinson (for a different question)。
输出
注意:如果输入是时区感知的datetime对象,例如
EASTERN_NOW
,则如果要保留舍入的本地时间并附加正确的tzinfo,则应调用timezone.make_aware(rounded_dt.replace(tzinfo=None))
,否则,如果舍入跨越DST边界,则可能会得到错误的时区信息。或者为了避免不明确的本地时间失败,请手动调用.localize()
:你可以把日期时间输入分开,然后调整时间
调整时间()
输出
2015-09-22 15:42:03.587633
2015-09-22 15:30
2015-09-22 15:46:01.956860
2015-09-22 16:00
相关问题 更多 >
编程相关推荐