尝试查找给定的开始日期,开始时间和结束时间的结束日期

时间:2019-03-25 16:10:48

标签: python datetime timedelta

在使用分隔格式的分隔文件使用维护窗口时:

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的操作,但是我将依赖于输入数据保持相同格式。

0 个答案:

没有答案