def time_for_next_update(last_time, period='D', hour=9): """计算下次更新时间 说明: 'D':移动到下一天 'W':移动到下周一 'M':移动到下月第一天 'Q':下一季度的第一天 将小时调整到指定的hour """ if pd.isnull(last_time): return MARKET_START period = period.upper() if period == 'D': d = BDay(normalize=True) return d.apply(last_time).replace(hour=hour) elif period == 'W': w = Week(normalize=True, weekday=0) return w.apply(last_time).replace(hour=hour) elif period == 'M': m = MonthBegin(normalize=True) return m.apply(last_time).replace(hour=hour) elif period == 'Q': q = QuarterBegin(normalize=True) return q.apply(last_time).replace(hour=hour) else: raise TypeError('不能识别的周期类型,仅接受{}'.format(('D', 'W', 'M', 'Q')))