在使用分隔格式的分隔文件使用维护窗口时:
X'th day of month | start time (hh:mm AM/PM) | end time (hh:mm AM/PM)
我需要考虑维护时段超出一天边界(即午夜之后)的情况。
为此,我的想法是在开始时间和结束时间之间创建一个timedelta
,然后将其添加到一个代表开始日期和时间的datetime
对象中,以便Python可以对日期进行排序改变了。
我到达的是:
fmt_frame = '{0}:{1}:{2}'
# 12H:MM:SS AM/PM
fmt = '%I:%M:%S %p'
maint_interval = datetime.strptime(fmt_frame.format(*maint_t_end_fields), fmt) - \
datetime.strptime(fmt_frame.format(*maint_t_start_fields), fmt)
logger.debug('Interval in seconds: {0}'.format(maint_interval.seconds))
maint_dt_start = datetime.combine(maint_day,
datetime.strptime(fmt_frame.format(*maint_t_start_fields), fmt).time())
maint_dt_end = maint_dt_start + timedelta(seconds=maint_interval.seconds)
maint_timing[fields[0]] = (maint_day,
maint_dt_start,
maint_dt_end)
我仅从第一个属性的seconds
属性创建第二个时间增量的理由是,将-1 days
属性留在后面,该属性是从晚上8点减去2AM而来的。
在没有明确的日期和开始时间以及结束时间的情况下,我是否错过了一种更直接的方法?
或者,我想我可以检查日期的AM / PM部分并执行类似if maint_t_start_fields[-1][-2:]=='PM' and maint_t_end_fields[-1][-2:] =='AM': #add a day to the result datetime object
的操作,但是我将依赖于输入数据保持相同格式。