VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 420
声望: 173

1. 计算下一个节假日的起止日期

    def get_next_holiday(self,dt:datetime):
        """ 
        计算下一个节假日的起止日期
        注意:dt必须为交易时间,否则返回为(0,(None,None))
        """
        days,holday_start,holday_stop = 0,None,None
        index,trade_times = self.get_trade_datetimes(dt)
        if trade_times:
            # dt在交易时间段内
            day_count = len(self.trade_index_date)
            for idx in range(index,day_count-1):
                # 寻找间隔超过一天的前后两个交易日
                date1 = self.trade_index_date[idx]
                date2 = self.trade_index_date[idx+1]
                date_diff = date2 - date1
                if date_diff > datetime.timedelta(days=1):
                    # 找到了间隔超过一天的前后两个交易日
                    days = date_diff.days - 1
                    # 前1日加一天为节假日开始
                    holday_start = date1 + datetime.timedelta(days=1)
                    # 后1日减一天为节假日结束
                    holday_stop = date2 + datetime.timedelta(days=-1)
                    break

        return days,(holday_start,holday_stop)

2. 计算交易时间距离节假日的时间

    def to_holiday_time(self,dt:datetime):
        """
        计算交易时间距离节假日的时间。
        无夜盘合约 : 到节假日前一交易日的日盘收盘时间
        有夜盘合约 : 到节假日后一交易日的夜盘收盘时间
        注意:dt必须为交易时间,否则返回为None
              返回值:
        """
        index,trade_times = self.get_trade_datetimes(dt,True)
        if trade_times:
            # dt在交易时间段内
            day_count = len(self.trade_index_date)
            for idx in range(index,day_count-1):
                # 寻找间隔超过一天的前后两个交易日
                date1 = self.trade_index_date[idx]
                date2 = self.trade_index_date[idx+1]
                date_diff = date2 - date1
                if date_diff > datetime.timedelta(days=1):
                    if not self.has_night_trading:
                        days,trade_times = self.get_date_tradetimes(date1)
                        stop_dt = trade_times[-1][1]
                        # print(f"{stop_dt} ")
                    else:
                        days,trade_times = self.get_date_tradetimes(date2)
                        dt1 = trade_times[0][0] 
                        has,(start_dt,stop_dt) = self.get_night_start_stop(dt1)
                        # print(f"dt1={dt1},{(start_dt,stop_dt)} ")

                    # print(f"has_night_trading ={self.has_night_trading}, stop_dt={stop_dt}")  
                    time_diff = stop_dt - dt
                    return time_diff
        return None

3. 完整的交易时间段类实现

保存文件:vnpy\usertools\trade_hour.py

"""
本文件主要实现合约的交易时间段
作者:hxxjava
日期:2020-8-1
"""
from typing import Callable,List,Dict, Tuple, Union
from enum import Enum

import datetime
import pytz
CHINA_TZ = pytz.timezone("Asia/Shanghai")

from vnpy.trader.utility import extract_vt_symbol
from vnpy.trader.constant import Interval

from rqdatac.utils import to_date
import rqdatac as rq


def get_listed_date(symbol:str):
    ''' 
    获得上市日期 
    '''
    info = rq.instruments(symbol)
    return to_date(info.listed_date)

def get_de_listed_date(symbol:str):
    ''' 
    获得交割日期 
    '''
    info = rq.instruments(symbol)
    return to_date(info.de_listed_date)

class Timeunit(Enum):
    """ 
    时间单位 
    """
    SECOND = '1s'
    MINUTE = '1m'
    HOUR = '1h'

class TradeHours(object):
    """ 合约交易时间段 """
    def __init__(self,symbol:str):
        self.symbol = symbol.upper()
        self.init()

    def init(self):
        """ 
        初始化交易日字典及交易时间段数据列表 
        """
        self.listed_date = get_listed_date(self.symbol)
        self.de_listed_date = get_de_listed_date(self.symbol)

        self.trade_date_index = {}   # 合约的交易日索引字典
        self.trade_index_date = {}   # 交易天数与交易日字典

        trade_dates = rq.get_trading_dates(self.listed_date,self.de_listed_date) # 合约的所有的交易日
        days = 0
        for td in trade_dates:
            self.trade_date_index[td] = days
            self.trade_index_date[days] = td
            days += 1

        trading_hours = rq.get_trading_hours(self.symbol,date=self.listed_date,frequency='tick',expected_fmt='datetime')

        self.has_night_trading = False
        self.time_dn_pairs = self._get_trading_times_dn(trading_hours)

        trading_hours0 = [(CHINA_TZ.localize(start),CHINA_TZ.localize(stop)) for start,stop in trading_hours]
        self.trade_date_index[self.listed_date] = (0,trading_hours0)
        for day in range(1,days):
            td = self.trade_index_date[day]
            trade_datetimes = []
            for (start,dn1),(stop,dn2) in self.time_dn_pairs:
                #start:开始时间,dn1:相对交易日前推天数,
                #stop :开始时间,dn2:相对开始时间后推天数     
                d = self.trade_index_date[day+dn1]
                start_dt = CHINA_TZ.localize(datetime.datetime.combine(d,start))
                stop_dt = CHINA_TZ.localize(datetime.datetime.combine(d,stop))
                trade_datetimes.append((start_dt,stop_dt+datetime.timedelta(days=dn2)))
            self.trade_date_index[td] = (day,trade_datetimes)

    def _get_trading_times_dn(self,trading_hours:List[Tuple[datetime.datetime,datetime.datetime]]): 
        """ 
        交易时间跨天处理,不推荐外部使用 。
        产生的结果:[((start1,dn11),(stop1,dn21)),((start2,dn12),(stop2,dn22)),...,((startN,dn1N),(stopN,dn2N))]
        其中:
            startN:开始时间,dn1N:相对交易日前推天数,
            stopN:开始时间,dn2N:相对开始时间后推天数      
        """
        ilen = len(trading_hours)
        if ilen == 0:
            return []
        start_stops = []
        for start,stop in trading_hours:
            start_stops.insert(0,(start.time(),stop.time()))

        pre_start,pre_stop = start_stops[0]
        dn1 = 0
        dn2 = 1 if pre_start > pre_stop else 0
        time_dn_pairs = [((pre_start,dn1),(pre_stop,dn2))]

        for start,stop in start_stops[1:]:
            if start > pre_start:
                self.has_night_trading = True
                dn1 -= 1
            dn2 = 1 if start > stop else 0
            time_dn_pairs.insert(0,((start,dn1),(stop,dn2)))
            pre_start,pre_stop = start,stop

        return time_dn_pairs

    def get_date_tradetimes(self,date:datetime.date):
        """ 
        得到合约date日期的交易时间段 
        """
        idx,trade_times = self.trade_date_index.get(date,(None,[]))
        return idx,trade_times

    def get_trade_datetimes(self,dt:datetime,allday:bool=False):
        """ 
        得到合约date日期的交易时间段 
        """
        # 得到最早的交易时间
        idx0,trade_times0 = self.get_date_tradetimes(self.listed_date)
        start0,stop0 = trade_times0[0]
        if dt < start0:
            return None,[]

        # 首先找到dt日期自上市以来的交易天数
        date,dn = dt.date(),0
        days = None
        while date < self.de_listed_date:
            days,ths = self.trade_date_index.get(date,(None,[]))
            if not days:
                dn += 1
                date = (dt+datetime.timedelta(days=dn)).date()
            else:
                break
        # 如果超出交割日也没有找到,那这就不是一个有效的交易时间
        if days is None:
            return (None,[])

        index_3 = [days,days+1,days-1]  # 前后三天的

        date_3d = []
        for day in index_3: 
            date = self.trade_index_date.get(day,None)
            date_3d.append(date)

        # print(date_3d)

        for date in date_3d:
            if not date:
                # print(f"{date} is not trade date")
                continue

            idx,trade_dts = self.get_date_tradetimes(date)
            # print(f"{date} tradetimes {trade_dts}")
            ilen = len(trade_dts)
            if ilen > 0:
                start0,stop = trade_dts[0]      # start0 是date交易日的开始时间
                start,stop0 = trade_dts[-1]
            if dt<start0 or dt>stop0:
                continue

            for start,stop in trade_dts:
                if dt>=start and dt < stop:
                    if allday:
                        return idx,trade_dts
                    else:
                        return idx,[(start,stop)]

        return None,[]

    def get_trade_time_perday(self):
        """ 
        计算每日的交易总时长(单位:分钟) 
        """
        TTPD = datetime.timedelta(0,0,0)

        datetimes = []
        today = datetime.datetime.now().date()

        for (start,dn1),(stop,dn2) in self.time_dn_pairs:
            start_dt = CHINA_TZ.localize(datetime.datetime.combine(today,start)) + datetime.timedelta(days=dn1)
            stop_dt = CHINA_TZ.localize(datetime.datetime.combine(today,stop)) + datetime.timedelta(days=dn2)
            time_delta = stop_dt - start_dt
            TTPD = TTPD + time_delta
        return int(TTPD.seconds/60)

    def get_trade_time_inday(self,dt:datetime,unit:Timeunit=Timeunit.MINUTE):
        """ 
        计算dt在交易日内的分钟数 
        unit: '1s':second;'1m':minute;'1h';1h
        """
        TTID = datetime.timedelta(0,0,0)

        day,trade_times = self.get_trade_datetimes(dt,allday=True)
        if not trade_times:
            return None

        for start,stop in trade_times:
            if dt > stop:
                time_delta = stop - start
                TTID += time_delta
            elif dt > start:
                time_delta = dt - start
                TTID += time_delta     
                break
            else:
                break          

        if unit == Timeunit.SECOND:
            return TTID.seconds
        elif unit == Timeunit.MINUTE:
            return int(TTID.seconds/60) 
        elif unit == Timeunit.HOUR:
            return int(TTID.seconds/3600) 
        else:
            return TTID

    def get_day_tradetimes(self,dt:datetime):
        """ 
        得到合约日盘的交易时间段 
        """
        index,trade_times = self.get_trade_datetimes(dt,allday=True)
        trade_times1 = []
        if trade_times:
            for start_dt,stop_dt in trade_times:
                if start_dt.time() < datetime.time(18,0,0):
                    trade_times1.append((start_dt,stop_dt))
            return index,trade_times1
        return (index,trade_times1)

    def get_night_tradetimes(self,dt:datetime):
        """ 
        得到合约夜盘的交易时间段 
        """
        index,trade_times = self.get_trade_datetimes(dt,allday=True)
        trade_times1 = []
        if trade_times:
            for start_dt,stop_dt in trade_times:
                if start_dt.time() > datetime.time(18,0,0):
                    trade_times1.append((start_dt,stop_dt))
            return index,trade_times1
        return (index,trade_times1)

    def convet_to_datetime(self,day:int,minutes:int):
        """ 
        计算minutes在第day交易日内的datetime形式的时间 
        """
        date = self.trade_index_date.get(day,None)
        if date is None:
            return None
        idx,trade_times = self.trade_date_index.get(date,(None,[]))
        if not trade_times:     # 不一定必要
            return None
        for (start,stop) in trade_times:
            timedelta = stop - start 
            if minutes < int(timedelta.seconds/60):
                return start + datetime.timedelta(minutes=minutes)
            else:
                minutes -= int(timedelta.seconds/60)
        return None

    def get_bar_window(self,dt:datetime,window:int,interval:Interval=Interval.MINUTE):
        """ 
        计算dt所在K线的起止时间 
        """
        bar_windows = (None,None)

        day,trade_times = self.get_trade_datetimes(dt,allday=True)
        if not trade_times:
            # print(f"day={day} trade_times={trade_times}")
            return bar_windows

        # 求每个交易日的交易时间分钟数
        TTPD = self.get_trade_time_perday()

        # 求dt在交易日内的分钟数
        TTID = self.get_trade_time_inday(dt,unit=Timeunit.MINUTE)

        # 得到dt时刻K线的起止时间 
        total_minites = day*TTPD + TTID

        # 计算K线宽度(分钟数)
        if interval == Interval.MINUTE:
            bar_width = window
        elif interval == Interval.HOUR:
            bar_width = 60*window
        elif interval == Interval.DAILY:
            bar_width = TTPD*window
        elif interval == Interval.WEEKLY:
            bar_width = TTPD*window*5
        else:
            return bar_windows

        # 求K线的开始时间的和结束的分钟形式
        start_m = int(total_minites/bar_width)*bar_width
        stop_m = start_m + bar_width

        # 计算K开始时间的datetime形式
        start_d = int(start_m / TTPD)
        minites = start_m % TTPD
        start_dt = self.convet_to_datetime(start_d,minites)
        # print(f"start_d={start_d} minites={minites}---->{start_dt}")

        # 计算K结束时间的datetime形式
        stop_d = int(stop_m / TTPD)
        minites = stop_m % TTPD
        stop_dt = self.convet_to_datetime(stop_d,minites)
        # print(f"stop_d={stop_d} minites={minites}---->{stop_dt}")

        return start_dt,stop_dt

    def get_date_start_stop(self,dt:datetime):
        """
        获得dt所在交易日的开始和停止时间
        """
        index,trade_times = self.get_trade_datetimes(dt,allday=True)
        if trade_times:
            valid_dt = False
            for t1,t2 in trade_times:
                if t1 < dt and dt < t2:
                    valid_dt = True
                    break
            if valid_dt:
                start_dt = trade_times[0][0]
                stop_dt = trade_times[-1][1]
                return True,(start_dt,stop_dt)
        return False,(None,None)

    def get_day_start_stop(self,dt:datetime):
        """
        获得dt所在交易日日盘的开始和停止时间
        """
        index,trade_times = self.get_day_tradetimes(dt)
        if trade_times:
            valid_dt = False
            for t1,t2 in trade_times:
                if t1 <= dt and dt < t2:
                    valid_dt = True
                    break
            if valid_dt:
                start_dt = trade_times[0][0]
                stop_dt = trade_times[-1][1]
                return True,(start_dt,stop_dt)
        return False,(None,None)

    def get_night_start_stop(self,dt:datetime):
        """
        获得dt所在交易日夜盘的开始和停止时间
        """
        index,trade_times = self.get_night_tradetimes(dt)
        if trade_times:
            valid_dt = False
            for t1,t2 in trade_times:
                if t1 <= dt and dt < t2:
                    valid_dt = True
                    break
            if valid_dt:
                start_dt = trade_times[0][0]
                stop_dt = trade_times[-1][1]
                return True,(start_dt,stop_dt)
        return False,(None,None)

    def get_next_holiday(self,dt:datetime):
        """ 
        计算下一个节假日的起止日期
        注意:dt必须为交易时间,否则返回为(0,(None,None))
        """
        days,holday_start,holday_stop = 0,None,None
        index,trade_times = self.get_trade_datetimes(dt)
        if trade_times:
            # dt在交易时间段内
            day_count = len(self.trade_index_date)
            for idx in range(index,day_count-1):
                # 寻找间隔超过一天的前后两个交易日
                date1 = self.trade_index_date[idx]
                date2 = self.trade_index_date[idx+1]
                date_diff = date2 - date1
                if date_diff > datetime.timedelta(days=1):
                    # 找到了间隔超过一天的前后两个交易日
                    days = date_diff.days - 1
                    # 前1日加一天为节假日开始
                    holday_start = date1 + datetime.timedelta(days=1)
                    # 后1日减一天为节假日结束
                    holday_stop = date2 + datetime.timedelta(days=-1)
                    break

        return days,(holday_start,holday_stop)

    def to_holiday_time(self,dt:datetime):
        """
        计算交易时间距离节假日的时间。
        无夜盘合约 : 到节假日前一交易日的日盘收盘时间
        有夜盘合约 : 到节假日后一交易日的夜盘收盘时间
        注意:dt必须为交易时间,否则返回为None
              返回值:
        """
        index,trade_times = self.get_trade_datetimes(dt,True)
        if trade_times:
            # dt在交易时间段内
            day_count = len(self.trade_index_date)
            for idx in range(index,day_count-1):
                # 寻找间隔超过一天的前后两个交易日
                date1 = self.trade_index_date[idx]
                date2 = self.trade_index_date[idx+1]
                date_diff = date2 - date1
                if date_diff > datetime.timedelta(days=1):
                    if not self.has_night_trading:
                        days,trade_times = self.get_date_tradetimes(date1)
                        stop_dt = trade_times[-1][1]
                        # print(f"{stop_dt} ")
                    else:
                        days,trade_times = self.get_date_tradetimes(date2)
                        dt1 = trade_times[0][0] 
                        has,(start_dt,stop_dt) = self.get_night_start_stop(dt1)
                        # print(f"dt1={dt1},{(start_dt,stop_dt)} ")

                    # print(f"has_night_trading ={self.has_night_trading}, stop_dt={stop_dt}")  
                    time_diff = stop_dt - dt
                    return time_diff
        return None


if __name__ == "__main__":

    def test1():
        # vt_symbols = ["rb2010.SHFE","ag2012.SHFE","i2010.DCE"]
        vt_symbols = ["ag2012.SHFE"]
        date0 = datetime.date(2020,8,31)
        dt0 = CHINA_TZ.localize(datetime.datetime(2020,8,31,9,20,15))
        for vt_symbol in vt_symbols:
            symbol,exchange = extract_vt_symbol(vt_symbol)
            th = TradeHours(symbol)
            # trade_hours = th.get_date_tradetimes(date0)
            # print(f"\n{vt_symbol} {date0} trade_hours={trade_hours}")

            days,trade_hours = th.get_trade_datetimes(dt0,allday=True)

            print(f"\n{vt_symbol} {dt0} days:{days} trade_hours={trade_hours}")

            if trade_hours:
                day_start = trade_hours[0][0]
                day_end = trade_hours[-1][1]
                print(f"day_start={day_start} day_end={day_end}")
                exit_time = day_end + datetime.timedelta(minutes=-5)
                print(f"exit_time={exit_time}")

            dt1 = CHINA_TZ.localize(datetime.datetime(2020,8,31,9,20,15))
            dt2 = CHINA_TZ.localize(datetime.datetime(2020,9,1,1,1,15))

            for dt in [dt1,dt2]:
                in_trade,(start,stop) = th.get_date_start_stop(dt)
                if (in_trade):
                    print(f"\n{vt_symbol} 时间 {dt} 交易日起止:{start,stop}")
                else:
                    print(f"\n{vt_symbol} 时间 {dt} 非交易时间")

                in_day,(start,stop) = th.get_day_start_stop(dt)
                if (in_day):
                    print(f"\n{vt_symbol} 时间 {dt} 日盘起止:{start,stop}")
                else:
                    print(f"\n{vt_symbol} 时间 {dt} 非日盘时间")

                in_night,(start,stop) = th.get_night_start_stop(dt)
                if in_night:
                    print(f"\n{vt_symbol} 时间 {dt} 夜盘起止:{start,stop}")
                else:
                    print(f"\n{vt_symbol} 时间 {dt} 非夜盘时间")

    def test2():
        vt_symbols = ["ag2012.SHFE"]
        date0 = datetime.date(2020,8,31)
        dt0 = CHINA_TZ.localize(datetime.datetime(2019,12,10,9,20,15))

        for vt_symbol in vt_symbols:      
            symbol,exchange = extract_vt_symbol(vt_symbol)
            th = TradeHours(symbol)

            for i in range(365):
                td = th.listed_date + datetime.timedelta(days=i)
                dt = CHINA_TZ.localize(
                        datetime.datetime.combine(td,datetime.time(9,20,15)))
                days,(date1,date2) = th.get_next_holiday(dt)
                print(f"dt={dt},days={days},holiday={date1,date2}")            



    def test3():
        """
        TradeHour.to_holiday_time()验证
        """
        vt_symbol = "ag2012.SHFE"
        date0 = datetime.date(2020,8,29)
        dt0 = CHINA_TZ.localize(datetime.datetime(2020,8,28,9,20,15))

        symbol,exchange = extract_vt_symbol(vt_symbol)
        th = TradeHours(symbol)

        for i in range(1200):
            dt = dt0 + datetime.timedelta(minutes=i)
            time_diff = th.to_holiday_time(dt)
            if time_diff:
                print(f"dt={dt},time_diff,time_diff={time_diff}")            


    # 开始测试
    rq.init('xxxxxx','******',("rqdatad-pro.ricequant.com",16011))

    # test1()
    # test2()
    test3()
Member
avatar
加入于:
帖子: 420
声望: 173

4. 函数测试及结果

4.1 找出ag2012合约的所有节假日

执行测试函数test2()
1)其中dt是选择了每天的一个交易时刻,days是下个节假日的天数,holiday是节假日的起止时间。
2)其中dt不是交易时刻,则days=0,holiday为None

dt=2019-12-17 09:20:15+08:00,days=2,holiday=(datetime.date(2019, 12, 21), datetime.date(2019, 12, 22))
dt=2019-12-18 09:20:15+08:00,days=2,holiday=(datetime.date(2019, 12, 21), datetime.date(2019, 12, 22))
dt=2019-12-19 09:20:15+08:00,days=2,holiday=(datetime.date(2019, 12, 21), datetime.date(2019, 12, 22))
dt=2019-12-20 09:20:15+08:00,days=2,holiday=(datetime.date(2019, 12, 21), datetime.date(2019, 12, 22))
dt=2019-12-21 09:20:15+08:00,days=0,holiday=(None, None)
dt=2019-12-22 09:20:15+08:00,days=0,holiday=(None, None)
dt=2019-12-23 09:20:15+08:00,days=2,holiday=(datetime.date(2019, 12, 28), datetime.date(2019, 12, 29))
dt=2019-12-24 09:20:15+08:00,days=2,holiday=(datetime.date(2019, 12, 28), datetime.date(2019, 12, 29))
dt=2019-12-25 09:20:15+08:00,days=2,holiday=(datetime.date(2019, 12, 28), datetime.date(2019, 12, 29))
dt=2019-12-26 09:20:15+08:00,days=2,holiday=(datetime.date(2019, 12, 28), datetime.date(2019, 12, 29))
dt=2019-12-27 09:20:15+08:00,days=2,holiday=(datetime.date(2019, 12, 28), datetime.date(2019, 12, 29))
dt=2019-12-28 09:20:15+08:00,days=0,holiday=(None, None)
dt=2019-12-29 09:20:15+08:00,days=0,holiday=(None, None)
dt=2019-12-30 09:20:15+08:00,days=1,holiday=(datetime.date(2020, 1, 1), datetime.date(2020, 1, 1))
dt=2019-12-31 09:20:15+08:00,days=1,holiday=(datetime.date(2020, 1, 1), datetime.date(2020, 1, 1))
dt=2020-01-01 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-02 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 4), datetime.date(2020, 1, 5))
dt=2020-01-03 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 4), datetime.date(2020, 1, 5))
dt=2020-01-04 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-05 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-06 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 11), datetime.date(2020, 1, 12))
dt=2020-01-07 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 11), datetime.date(2020, 1, 12))
dt=2020-01-08 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 11), datetime.date(2020, 1, 12))
dt=2020-01-09 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 11), datetime.date(2020, 1, 12))
dt=2020-01-10 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 11), datetime.date(2020, 1, 12))
dt=2020-01-11 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-12 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-13 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 18), datetime.date(2020, 1, 19))
dt=2020-01-14 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 18), datetime.date(2020, 1, 19))
dt=2020-01-15 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 18), datetime.date(2020, 1, 19))
dt=2020-01-16 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 18), datetime.date(2020, 1, 19))
dt=2020-01-17 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 1, 18), datetime.date(2020, 1, 19))
dt=2020-01-18 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-19 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-20 09:20:15+08:00,days=10,holiday=(datetime.date(2020, 1, 24), datetime.date(2020, 2, 2))
dt=2020-01-21 09:20:15+08:00,days=10,holiday=(datetime.date(2020, 1, 24), datetime.date(2020, 2, 2))
dt=2020-01-22 09:20:15+08:00,days=10,holiday=(datetime.date(2020, 1, 24), datetime.date(2020, 2, 2))
dt=2020-01-23 09:20:15+08:00,days=10,holiday=(datetime.date(2020, 1, 24), datetime.date(2020, 2, 2))
dt=2020-01-24 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-25 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-26 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-27 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-28 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-29 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-30 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-01-31 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-02-01 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-02-02 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-02-03 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 8), datetime.date(2020, 2, 9))
dt=2020-02-04 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 8), datetime.date(2020, 2, 9))
dt=2020-02-05 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 8), datetime.date(2020, 2, 9))
dt=2020-02-06 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 8), datetime.date(2020, 2, 9))
dt=2020-02-07 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 8), datetime.date(2020, 2, 9))
dt=2020-02-08 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-02-09 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-02-10 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 15), datetime.date(2020, 2, 16))
dt=2020-02-11 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 15), datetime.date(2020, 2, 16))
dt=2020-02-12 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 15), datetime.date(2020, 2, 16))
dt=2020-02-13 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 15), datetime.date(2020, 2, 16))
dt=2020-02-14 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 15), datetime.date(2020, 2, 16))
dt=2020-02-15 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-02-16 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-02-17 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 22), datetime.date(2020, 2, 23))
dt=2020-02-18 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 22), datetime.date(2020, 2, 23))
dt=2020-02-19 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 22), datetime.date(2020, 2, 23))
dt=2020-02-20 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 22), datetime.date(2020, 2, 23))
dt=2020-02-21 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 22), datetime.date(2020, 2, 23))
dt=2020-02-22 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-02-23 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-02-24 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 29), datetime.date(2020, 3, 1))
dt=2020-02-25 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 29), datetime.date(2020, 3, 1))
dt=2020-02-26 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 29), datetime.date(2020, 3, 1))
dt=2020-02-27 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 29), datetime.date(2020, 3, 1))
dt=2020-02-28 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 2, 29), datetime.date(2020, 3, 1))
dt=2020-02-29 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-03-01 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-03-02 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 7), datetime.date(2020, 3, 8))
dt=2020-03-03 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 7), datetime.date(2020, 3, 8))
dt=2020-03-04 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 7), datetime.date(2020, 3, 8))
dt=2020-03-05 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 7), datetime.date(2020, 3, 8))
dt=2020-03-06 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 7), datetime.date(2020, 3, 8))
dt=2020-03-07 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-03-08 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-03-09 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 14), datetime.date(2020, 3, 15))
dt=2020-03-10 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 14), datetime.date(2020, 3, 15))
dt=2020-03-11 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 14), datetime.date(2020, 3, 15))
dt=2020-03-12 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 14), datetime.date(2020, 3, 15))
dt=2020-03-13 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 14), datetime.date(2020, 3, 15))
dt=2020-03-14 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-03-15 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-03-16 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 21), datetime.date(2020, 3, 22))
dt=2020-03-17 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 21), datetime.date(2020, 3, 22))
dt=2020-03-18 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 21), datetime.date(2020, 3, 22))
dt=2020-03-19 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 21), datetime.date(2020, 3, 22))
dt=2020-03-20 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 21), datetime.date(2020, 3, 22))
dt=2020-03-21 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-03-22 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-03-23 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 28), datetime.date(2020, 3, 29))
dt=2020-03-24 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 28), datetime.date(2020, 3, 29))
dt=2020-03-25 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 28), datetime.date(2020, 3, 29))
dt=2020-03-26 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 28), datetime.date(2020, 3, 29))
dt=2020-03-27 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 3, 28), datetime.date(2020, 3, 29))
dt=2020-03-28 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-03-29 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-03-30 09:20:15+08:00,days=3,holiday=(datetime.date(2020, 4, 4), datetime.date(2020, 4, 6))
dt=2020-03-31 09:20:15+08:00,days=3,holiday=(datetime.date(2020, 4, 4), datetime.date(2020, 4, 6))
dt=2020-04-01 09:20:15+08:00,days=3,holiday=(datetime.date(2020, 4, 4), datetime.date(2020, 4, 6))
dt=2020-04-02 09:20:15+08:00,days=3,holiday=(datetime.date(2020, 4, 4), datetime.date(2020, 4, 6))
dt=2020-04-03 09:20:15+08:00,days=3,holiday=(datetime.date(2020, 4, 4), datetime.date(2020, 4, 6))
dt=2020-04-04 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-04-05 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-04-06 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-04-07 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 11), datetime.date(2020, 4, 12))
dt=2020-04-08 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 11), datetime.date(2020, 4, 12))
dt=2020-04-09 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 11), datetime.date(2020, 4, 12))
dt=2020-04-10 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 11), datetime.date(2020, 4, 12))
dt=2020-04-11 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-04-12 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-04-13 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 18), datetime.date(2020, 4, 19))
dt=2020-04-14 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 18), datetime.date(2020, 4, 19))
dt=2020-04-15 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 18), datetime.date(2020, 4, 19))
dt=2020-04-16 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 18), datetime.date(2020, 4, 19))
dt=2020-04-17 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 18), datetime.date(2020, 4, 19))
dt=2020-04-18 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-04-19 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-04-20 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 25), datetime.date(2020, 4, 26))
dt=2020-04-21 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 25), datetime.date(2020, 4, 26))
dt=2020-04-22 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 25), datetime.date(2020, 4, 26))
dt=2020-04-23 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 25), datetime.date(2020, 4, 26))
dt=2020-04-24 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 4, 25), datetime.date(2020, 4, 26))
dt=2020-04-25 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-04-26 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-04-27 09:20:15+08:00,days=5,holiday=(datetime.date(2020, 5, 1), datetime.date(2020, 5, 5))
dt=2020-04-28 09:20:15+08:00,days=5,holiday=(datetime.date(2020, 5, 1), datetime.date(2020, 5, 5))
dt=2020-04-29 09:20:15+08:00,days=5,holiday=(datetime.date(2020, 5, 1), datetime.date(2020, 5, 5))
dt=2020-04-30 09:20:15+08:00,days=5,holiday=(datetime.date(2020, 5, 1), datetime.date(2020, 5, 5))
dt=2020-05-01 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-02 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-03 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-04 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-05 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-06 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 9), datetime.date(2020, 5, 10))
dt=2020-05-07 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 9), datetime.date(2020, 5, 10))
dt=2020-05-08 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 9), datetime.date(2020, 5, 10))
dt=2020-05-09 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-10 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-11 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 16), datetime.date(2020, 5, 17))
dt=2020-05-12 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 16), datetime.date(2020, 5, 17))
dt=2020-05-13 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 16), datetime.date(2020, 5, 17))
dt=2020-05-14 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 16), datetime.date(2020, 5, 17))
dt=2020-05-15 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 16), datetime.date(2020, 5, 17))
dt=2020-05-16 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-17 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-18 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 23), datetime.date(2020, 5, 24))
dt=2020-05-19 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 23), datetime.date(2020, 5, 24))
dt=2020-05-20 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 23), datetime.date(2020, 5, 24))
dt=2020-05-21 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 23), datetime.date(2020, 5, 24))
dt=2020-05-22 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 23), datetime.date(2020, 5, 24))
dt=2020-05-23 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-24 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-25 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 30), datetime.date(2020, 5, 31))
dt=2020-05-26 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 30), datetime.date(2020, 5, 31))
dt=2020-05-27 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 30), datetime.date(2020, 5, 31))
dt=2020-05-28 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 30), datetime.date(2020, 5, 31))
dt=2020-05-29 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 5, 30), datetime.date(2020, 5, 31))
dt=2020-05-30 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-05-31 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-06-01 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 6), datetime.date(2020, 6, 7))
dt=2020-06-02 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 6), datetime.date(2020, 6, 7))
dt=2020-06-03 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 6), datetime.date(2020, 6, 7))
dt=2020-06-04 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 6), datetime.date(2020, 6, 7))
dt=2020-06-05 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 6), datetime.date(2020, 6, 7))
dt=2020-06-06 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-06-07 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-06-08 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 13), datetime.date(2020, 6, 14))
dt=2020-06-09 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 13), datetime.date(2020, 6, 14))
dt=2020-06-10 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 13), datetime.date(2020, 6, 14))
dt=2020-06-11 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 13), datetime.date(2020, 6, 14))
dt=2020-06-12 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 13), datetime.date(2020, 6, 14))
dt=2020-06-13 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-06-14 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-06-15 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 20), datetime.date(2020, 6, 21))
dt=2020-06-16 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 20), datetime.date(2020, 6, 21))
dt=2020-06-17 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 20), datetime.date(2020, 6, 21))
dt=2020-06-18 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 20), datetime.date(2020, 6, 21))
dt=2020-06-19 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 6, 20), datetime.date(2020, 6, 21))
dt=2020-06-20 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-06-21 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-06-22 09:20:15+08:00,days=4,holiday=(datetime.date(2020, 6, 25), datetime.date(2020, 6, 28))
dt=2020-06-23 09:20:15+08:00,days=4,holiday=(datetime.date(2020, 6, 25), datetime.date(2020, 6, 28))
dt=2020-06-24 09:20:15+08:00,days=4,holiday=(datetime.date(2020, 6, 25), datetime.date(2020, 6, 28))
dt=2020-06-25 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-06-26 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-06-27 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-06-28 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-06-29 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 4), datetime.date(2020, 7, 5))
dt=2020-06-30 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 4), datetime.date(2020, 7, 5))
dt=2020-07-01 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 4), datetime.date(2020, 7, 5))
dt=2020-07-02 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 4), datetime.date(2020, 7, 5))
dt=2020-07-03 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 4), datetime.date(2020, 7, 5))
dt=2020-07-04 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-07-05 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-07-06 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 11), datetime.date(2020, 7, 12))
dt=2020-07-07 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 11), datetime.date(2020, 7, 12))
dt=2020-07-08 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 11), datetime.date(2020, 7, 12))
dt=2020-07-09 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 11), datetime.date(2020, 7, 12))
dt=2020-07-10 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 11), datetime.date(2020, 7, 12))
dt=2020-07-11 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-07-12 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-07-13 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 18), datetime.date(2020, 7, 19))
dt=2020-07-14 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 18), datetime.date(2020, 7, 19))
dt=2020-07-15 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 18), datetime.date(2020, 7, 19))
dt=2020-07-16 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 18), datetime.date(2020, 7, 19))
dt=2020-07-17 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 18), datetime.date(2020, 7, 19))
dt=2020-07-18 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-07-19 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-07-20 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 25), datetime.date(2020, 7, 26))
dt=2020-07-21 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 25), datetime.date(2020, 7, 26))
dt=2020-07-22 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 25), datetime.date(2020, 7, 26))
dt=2020-07-23 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 25), datetime.date(2020, 7, 26))
dt=2020-07-24 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 7, 25), datetime.date(2020, 7, 26))
dt=2020-07-25 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-07-26 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-07-27 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 1), datetime.date(2020, 8, 2))
dt=2020-07-28 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 1), datetime.date(2020, 8, 2))
dt=2020-07-29 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 1), datetime.date(2020, 8, 2))
dt=2020-07-30 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 1), datetime.date(2020, 8, 2))
dt=2020-07-31 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 1), datetime.date(2020, 8, 2))
dt=2020-08-01 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-08-02 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-08-03 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 8), datetime.date(2020, 8, 9))
dt=2020-08-04 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 8), datetime.date(2020, 8, 9))
dt=2020-08-05 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 8), datetime.date(2020, 8, 9))
dt=2020-08-06 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 8), datetime.date(2020, 8, 9))
dt=2020-08-07 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 8), datetime.date(2020, 8, 9))
dt=2020-08-08 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-08-09 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-08-10 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 15), datetime.date(2020, 8, 16))
dt=2020-08-11 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 15), datetime.date(2020, 8, 16))
dt=2020-08-12 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 15), datetime.date(2020, 8, 16))
dt=2020-08-13 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 15), datetime.date(2020, 8, 16))
dt=2020-08-14 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 15), datetime.date(2020, 8, 16))
dt=2020-08-15 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-08-16 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-08-17 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 22), datetime.date(2020, 8, 23))
dt=2020-08-18 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 22), datetime.date(2020, 8, 23))
dt=2020-08-19 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 22), datetime.date(2020, 8, 23))
dt=2020-08-20 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 22), datetime.date(2020, 8, 23))
dt=2020-08-21 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 22), datetime.date(2020, 8, 23))
dt=2020-08-22 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-08-23 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-08-24 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 29), datetime.date(2020, 8, 30))
dt=2020-08-25 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 29), datetime.date(2020, 8, 30))
dt=2020-08-26 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 29), datetime.date(2020, 8, 30))
dt=2020-08-27 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 29), datetime.date(2020, 8, 30))
dt=2020-08-28 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 8, 29), datetime.date(2020, 8, 30))
dt=2020-08-29 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-08-30 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-08-31 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 5), datetime.date(2020, 9, 6))
dt=2020-09-01 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 5), datetime.date(2020, 9, 6))
dt=2020-09-02 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 5), datetime.date(2020, 9, 6))
dt=2020-09-03 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 5), datetime.date(2020, 9, 6))
dt=2020-09-04 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 5), datetime.date(2020, 9, 6))
dt=2020-09-05 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-09-06 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-09-07 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 12), datetime.date(2020, 9, 13))
dt=2020-09-08 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 12), datetime.date(2020, 9, 13))
dt=2020-09-09 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 12), datetime.date(2020, 9, 13))
dt=2020-09-10 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 12), datetime.date(2020, 9, 13))
dt=2020-09-11 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 12), datetime.date(2020, 9, 13))
dt=2020-09-12 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-09-13 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-09-14 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 19), datetime.date(2020, 9, 20))
dt=2020-09-15 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 19), datetime.date(2020, 9, 20))
dt=2020-09-16 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 19), datetime.date(2020, 9, 20))
dt=2020-09-17 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 19), datetime.date(2020, 9, 20))
dt=2020-09-18 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 19), datetime.date(2020, 9, 20))
dt=2020-09-19 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-09-20 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-09-21 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 26), datetime.date(2020, 9, 27))
dt=2020-09-22 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 26), datetime.date(2020, 9, 27))
dt=2020-09-23 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 26), datetime.date(2020, 9, 27))
dt=2020-09-24 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 26), datetime.date(2020, 9, 27))
dt=2020-09-25 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 9, 26), datetime.date(2020, 9, 27))
dt=2020-09-26 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-09-27 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-09-28 09:20:15+08:00,days=8,holiday=(datetime.date(2020, 10, 1), datetime.date(2020, 10, 8))
dt=2020-09-29 09:20:15+08:00,days=8,holiday=(datetime.date(2020, 10, 1), datetime.date(2020, 10, 8))
dt=2020-09-30 09:20:15+08:00,days=8,holiday=(datetime.date(2020, 10, 1), datetime.date(2020, 10, 8))
dt=2020-10-01 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-02 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-03 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-04 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-05 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-06 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-07 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-08 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-09 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 10), datetime.date(2020, 10, 11))
dt=2020-10-10 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-11 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-12 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 17), datetime.date(2020, 10, 18))
dt=2020-10-13 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 17), datetime.date(2020, 10, 18))
dt=2020-10-14 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 17), datetime.date(2020, 10, 18))
dt=2020-10-15 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 17), datetime.date(2020, 10, 18))
dt=2020-10-16 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 17), datetime.date(2020, 10, 18))
dt=2020-10-17 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-18 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-19 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 24), datetime.date(2020, 10, 25))
dt=2020-10-20 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 24), datetime.date(2020, 10, 25))
dt=2020-10-21 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 24), datetime.date(2020, 10, 25))
dt=2020-10-22 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 24), datetime.date(2020, 10, 25))
dt=2020-10-23 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 24), datetime.date(2020, 10, 25))
dt=2020-10-24 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-25 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-10-26 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 31), datetime.date(2020, 11, 1))
dt=2020-10-27 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 31), datetime.date(2020, 11, 1))
dt=2020-10-28 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 31), datetime.date(2020, 11, 1))
dt=2020-10-29 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 31), datetime.date(2020, 11, 1))
dt=2020-10-30 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 10, 31), datetime.date(2020, 11, 1))
dt=2020-10-31 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-11-01 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-11-02 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 7), datetime.date(2020, 11, 8))
dt=2020-11-03 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 7), datetime.date(2020, 11, 8))
dt=2020-11-04 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 7), datetime.date(2020, 11, 8))
dt=2020-11-05 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 7), datetime.date(2020, 11, 8))
dt=2020-11-06 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 7), datetime.date(2020, 11, 8))
dt=2020-11-07 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-11-08 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-11-09 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 14), datetime.date(2020, 11, 15))
dt=2020-11-10 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 14), datetime.date(2020, 11, 15))
dt=2020-11-11 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 14), datetime.date(2020, 11, 15))
dt=2020-11-12 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 14), datetime.date(2020, 11, 15))
dt=2020-11-13 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 14), datetime.date(2020, 11, 15))
dt=2020-11-14 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-11-15 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-11-16 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 21), datetime.date(2020, 11, 22))
dt=2020-11-17 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 21), datetime.date(2020, 11, 22))
dt=2020-11-18 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 21), datetime.date(2020, 11, 22))
dt=2020-11-19 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 21), datetime.date(2020, 11, 22))
dt=2020-11-20 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 21), datetime.date(2020, 11, 22))
dt=2020-11-21 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-11-22 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-11-23 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 28), datetime.date(2020, 11, 29))
dt=2020-11-24 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 28), datetime.date(2020, 11, 29))
dt=2020-11-25 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 28), datetime.date(2020, 11, 29))
dt=2020-11-26 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 28), datetime.date(2020, 11, 29))
dt=2020-11-27 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 11, 28), datetime.date(2020, 11, 29))
dt=2020-11-28 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-11-29 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-11-30 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 12, 5), datetime.date(2020, 12, 6))
dt=2020-12-01 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 12, 5), datetime.date(2020, 12, 6))
dt=2020-12-02 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 12, 5), datetime.date(2020, 12, 6))
dt=2020-12-03 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 12, 5), datetime.date(2020, 12, 6))
dt=2020-12-04 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 12, 5), datetime.date(2020, 12, 6))
dt=2020-12-05 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-12-06 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-12-07 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 12, 12), datetime.date(2020, 12, 13))
dt=2020-12-08 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 12, 12), datetime.date(2020, 12, 13))
dt=2020-12-09 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 12, 12), datetime.date(2020, 12, 13))
dt=2020-12-10 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 12, 12), datetime.date(2020, 12, 13))
dt=2020-12-11 09:20:15+08:00,days=2,holiday=(datetime.date(2020, 12, 12), datetime.date(2020, 12, 13))
dt=2020-12-12 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-12-13 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-12-14 09:20:15+08:00,days=0,holiday=(None, None)
dt=2020-12-15 09:20:15+08:00,days=0,holiday=(None, None)

4.2 找出交易时间距离下个节假日的时间长度

合约ag2012,开始时间2020-8-28 14:20:15, 步长1分钟
执行测试函数test3()
结果如下:

dt=2020-08-28 14:20:15+08:00,time_diff,time_diff=12:09:45
dt=2020-08-28 14:21:15+08:00,time_diff,time_diff=12:08:45
dt=2020-08-28 14:22:15+08:00,time_diff,time_diff=12:07:45
dt=2020-08-28 14:23:15+08:00,time_diff,time_diff=12:06:45
dt=2020-08-28 14:24:15+08:00,time_diff,time_diff=12:05:45
dt=2020-08-28 14:25:15+08:00,time_diff,time_diff=12:04:45
dt=2020-08-28 14:26:15+08:00,time_diff,time_diff=12:03:45
dt=2020-08-28 14:27:15+08:00,time_diff,time_diff=12:02:45
dt=2020-08-28 14:28:15+08:00,time_diff,time_diff=12:01:45
dt=2020-08-28 14:29:15+08:00,time_diff,time_diff=12:00:45
dt=2020-08-28 14:30:15+08:00,time_diff,time_diff=11:59:45
dt=2020-08-28 14:31:15+08:00,time_diff,time_diff=11:58:45
dt=2020-08-28 14:32:15+08:00,time_diff,time_diff=11:57:45
dt=2020-08-28 14:33:15+08:00,time_diff,time_diff=11:56:45
dt=2020-08-28 14:34:15+08:00,time_diff,time_diff=11:55:45
dt=2020-08-28 14:35:15+08:00,time_diff,time_diff=11:54:45
dt=2020-08-28 14:36:15+08:00,time_diff,time_diff=11:53:45
dt=2020-08-28 14:37:15+08:00,time_diff,time_diff=11:52:45
dt=2020-08-28 14:38:15+08:00,time_diff,time_diff=11:51:45
dt=2020-08-28 14:39:15+08:00,time_diff,time_diff=11:50:45
dt=2020-08-28 14:40:15+08:00,time_diff,time_diff=11:49:45
dt=2020-08-28 14:41:15+08:00,time_diff,time_diff=11:48:45
dt=2020-08-28 14:42:15+08:00,time_diff,time_diff=11:47:45
dt=2020-08-28 14:43:15+08:00,time_diff,time_diff=11:46:45
dt=2020-08-28 14:44:15+08:00,time_diff,time_diff=11:45:45
dt=2020-08-28 14:45:15+08:00,time_diff,time_diff=11:44:45
dt=2020-08-28 14:46:15+08:00,time_diff,time_diff=11:43:45
dt=2020-08-28 14:47:15+08:00,time_diff,time_diff=11:42:45
dt=2020-08-28 14:48:15+08:00,time_diff,time_diff=11:41:45
dt=2020-08-28 14:49:15+08:00,time_diff,time_diff=11:40:45
dt=2020-08-28 14:50:15+08:00,time_diff,time_diff=11:39:45
dt=2020-08-28 14:51:15+08:00,time_diff,time_diff=11:38:45
dt=2020-08-28 14:52:15+08:00,time_diff,time_diff=11:37:45
dt=2020-08-28 14:53:15+08:00,time_diff,time_diff=11:36:45
dt=2020-08-28 14:54:15+08:00,time_diff,time_diff=11:35:45
dt=2020-08-28 14:55:15+08:00,time_diff,time_diff=11:34:45
dt=2020-08-28 14:56:15+08:00,time_diff,time_diff=11:33:45
dt=2020-08-28 14:57:15+08:00,time_diff,time_diff=11:32:45
dt=2020-08-28 14:58:15+08:00,time_diff,time_diff=11:31:45
dt=2020-08-28 14:59:15+08:00,time_diff,time_diff=11:30:45
dt=2020-08-28 21:00:15+08:00,time_diff,time_diff=7 days, 5:29:45
dt=2020-08-28 21:01:15+08:00,time_diff,time_diff=7 days, 5:28:45
dt=2020-08-28 21:02:15+08:00,time_diff,time_diff=7 days, 5:27:45
dt=2020-08-28 21:03:15+08:00,time_diff,time_diff=7 days, 5:26:45
dt=2020-08-28 21:04:15+08:00,time_diff,time_diff=7 days, 5:25:45
dt=2020-08-28 21:05:15+08:00,time_diff,time_diff=7 days, 5:24:45
dt=2020-08-28 21:06:15+08:00,time_diff,time_diff=7 days, 5:23:45
dt=2020-08-28 21:07:15+08:00,time_diff,time_diff=7 days, 5:22:45
dt=2020-08-28 21:08:15+08:00,time_diff,time_diff=7 days, 5:21:45
dt=2020-08-28 21:09:15+08:00,time_diff,time_diff=7 days, 5:20:45
dt=2020-08-28 21:10:15+08:00,time_diff,time_diff=7 days, 5:19:45
dt=2020-08-28 21:11:15+08:00,time_diff,time_diff=7 days, 5:18:45
dt=2020-08-28 21:12:15+08:00,time_diff,time_diff=7 days, 5:17:45
dt=2020-08-28 21:13:15+08:00,time_diff,time_diff=7 days, 5:16:45
dt=2020-08-28 21:14:15+08:00,time_diff,time_diff=7 days, 5:15:45
dt=2020-08-28 21:15:15+08:00,time_diff,time_diff=7 days, 5:14:45
dt=2020-08-28 21:16:15+08:00,time_diff,time_diff=7 days, 5:13:45
dt=2020-08-28 21:17:15+08:00,time_diff,time_diff=7 days, 5:12:45
dt=2020-08-28 21:18:15+08:00,time_diff,time_diff=7 days, 5:11:45
dt=2020-08-28 21:19:15+08:00,time_diff,time_diff=7 days, 5:10:45
dt=2020-08-28 21:20:15+08:00,time_diff,time_diff=7 days, 5:09:45
dt=2020-08-28 21:21:15+08:00,time_diff,time_diff=7 days, 5:08:45
dt=2020-08-28 21:22:15+08:00,time_diff,time_diff=7 days, 5:07:45
dt=2020-08-28 21:23:15+08:00,time_diff,time_diff=7 days, 5:06:45
dt=2020-08-28 21:24:15+08:00,time_diff,time_diff=7 days, 5:05:45
dt=2020-08-28 21:25:15+08:00,time_diff,time_diff=7 days, 5:04:45
dt=2020-08-28 21:26:15+08:00,time_diff,time_diff=7 days, 5:03:45
dt=2020-08-28 21:27:15+08:00,time_diff,time_diff=7 days, 5:02:45
dt=2020-08-28 21:28:15+08:00,time_diff,time_diff=7 days, 5:01:45
dt=2020-08-28 21:29:15+08:00,time_diff,time_diff=7 days, 5:00:45
dt=2020-08-28 21:30:15+08:00,time_diff,time_diff=7 days, 4:59:45
dt=2020-08-28 21:31:15+08:00,time_diff,time_diff=7 days, 4:58:45
dt=2020-08-28 21:32:15+08:00,time_diff,time_diff=7 days, 4:57:45
dt=2020-08-28 21:33:15+08:00,time_diff,time_diff=7 days, 4:56:45
dt=2020-08-28 21:34:15+08:00,time_diff,time_diff=7 days, 4:55:45
dt=2020-08-28 21:35:15+08:00,time_diff,time_diff=7 days, 4:54:45
dt=2020-08-28 21:36:15+08:00,time_diff,time_diff=7 days, 4:53:45
dt=2020-08-28 21:37:15+08:00,time_diff,time_diff=7 days, 4:52:45
dt=2020-08-28 21:38:15+08:00,time_diff,time_diff=7 days, 4:51:45
dt=2020-08-28 21:39:15+08:00,time_diff,time_diff=7 days, 4:50:45
dt=2020-08-28 21:40:15+08:00,time_diff,time_diff=7 days, 4:49:45
dt=2020-08-28 21:41:15+08:00,time_diff,time_diff=7 days, 4:48:45
dt=2020-08-28 21:42:15+08:00,time_diff,time_diff=7 days, 4:47:45
dt=2020-08-28 21:43:15+08:00,time_diff,time_diff=7 days, 4:46:45
dt=2020-08-28 21:44:15+08:00,time_diff,time_diff=7 days, 4:45:45
dt=2020-08-28 21:45:15+08:00,time_diff,time_diff=7 days, 4:44:45
dt=2020-08-28 21:46:15+08:00,time_diff,time_diff=7 days, 4:43:45
dt=2020-08-28 21:47:15+08:00,time_diff,time_diff=7 days, 4:42:45
dt=2020-08-28 21:48:15+08:00,time_diff,time_diff=7 days, 4:41:45
dt=2020-08-28 21:49:15+08:00,time_diff,time_diff=7 days, 4:40:45
dt=2020-08-28 21:50:15+08:00,time_diff,time_diff=7 days, 4:39:45
dt=2020-08-28 21:51:15+08:00,time_diff,time_diff=7 days, 4:38:45
dt=2020-08-28 21:52:15+08:00,time_diff,time_diff=7 days, 4:37:45
dt=2020-08-28 21:53:15+08:00,time_diff,time_diff=7 days, 4:36:45
dt=2020-08-28 21:54:15+08:00,time_diff,time_diff=7 days, 4:35:45
dt=2020-08-28 21:55:15+08:00,time_diff,time_diff=7 days, 4:34:45
dt=2020-08-28 21:56:15+08:00,time_diff,time_diff=7 days, 4:33:45
dt=2020-08-28 21:57:15+08:00,time_diff,time_diff=7 days, 4:32:45
dt=2020-08-28 21:58:15+08:00,time_diff,time_diff=7 days, 4:31:45
dt=2020-08-28 21:59:15+08:00,time_diff,time_diff=7 days, 4:30:45
dt=2020-08-28 22:00:15+08:00,time_diff,time_diff=7 days, 4:29:45
dt=2020-08-28 22:01:15+08:00,time_diff,time_diff=7 days, 4:28:45
dt=2020-08-28 22:02:15+08:00,time_diff,time_diff=7 days, 4:27:45
dt=2020-08-28 22:03:15+08:00,time_diff,time_diff=7 days, 4:26:45
dt=2020-08-28 22:04:15+08:00,time_diff,time_diff=7 days, 4:25:45
dt=2020-08-28 22:05:15+08:00,time_diff,time_diff=7 days, 4:24:45
dt=2020-08-28 22:06:15+08:00,time_diff,time_diff=7 days, 4:23:45
dt=2020-08-28 22:07:15+08:00,time_diff,time_diff=7 days, 4:22:45
dt=2020-08-28 22:08:15+08:00,time_diff,time_diff=7 days, 4:21:45
dt=2020-08-28 22:09:15+08:00,time_diff,time_diff=7 days, 4:20:45
dt=2020-08-28 22:10:15+08:00,time_diff,time_diff=7 days, 4:19:45
dt=2020-08-28 22:11:15+08:00,time_diff,time_diff=7 days, 4:18:45
dt=2020-08-28 22:12:15+08:00,time_diff,time_diff=7 days, 4:17:45
dt=2020-08-28 22:13:15+08:00,time_diff,time_diff=7 days, 4:16:45
dt=2020-08-28 22:14:15+08:00,time_diff,time_diff=7 days, 4:15:45
dt=2020-08-28 22:15:15+08:00,time_diff,time_diff=7 days, 4:14:45
dt=2020-08-28 22:16:15+08:00,time_diff,time_diff=7 days, 4:13:45
dt=2020-08-28 22:17:15+08:00,time_diff,time_diff=7 days, 4:12:45
dt=2020-08-28 22:18:15+08:00,time_diff,time_diff=7 days, 4:11:45
dt=2020-08-28 22:19:15+08:00,time_diff,time_diff=7 days, 4:10:45
dt=2020-08-28 22:20:15+08:00,time_diff,time_diff=7 days, 4:09:45
dt=2020-08-28 22:21:15+08:00,time_diff,time_diff=7 days, 4:08:45
dt=2020-08-28 22:22:15+08:00,time_diff,time_diff=7 days, 4:07:45
dt=2020-08-28 22:23:15+08:00,time_diff,time_diff=7 days, 4:06:45
dt=2020-08-28 22:24:15+08:00,time_diff,time_diff=7 days, 4:05:45
dt=2020-08-28 22:25:15+08:00,time_diff,time_diff=7 days, 4:04:45
dt=2020-08-28 22:26:15+08:00,time_diff,time_diff=7 days, 4:03:45
dt=2020-08-28 22:27:15+08:00,time_diff,time_diff=7 days, 4:02:45
dt=2020-08-28 22:28:15+08:00,time_diff,time_diff=7 days, 4:01:45
dt=2020-08-28 22:29:15+08:00,time_diff,time_diff=7 days, 4:00:45
dt=2020-08-28 22:30:15+08:00,time_diff,time_diff=7 days, 3:59:45
dt=2020-08-28 22:31:15+08:00,time_diff,time_diff=7 days, 3:58:45
dt=2020-08-28 22:32:15+08:00,time_diff,time_diff=7 days, 3:57:45
dt=2020-08-28 22:33:15+08:00,time_diff,time_diff=7 days, 3:56:45
dt=2020-08-28 22:34:15+08:00,time_diff,time_diff=7 days, 3:55:45
dt=2020-08-28 22:35:15+08:00,time_diff,time_diff=7 days, 3:54:45
dt=2020-08-28 22:36:15+08:00,time_diff,time_diff=7 days, 3:53:45
dt=2020-08-28 22:37:15+08:00,time_diff,time_diff=7 days, 3:52:45
dt=2020-08-28 22:38:15+08:00,time_diff,time_diff=7 days, 3:51:45
dt=2020-08-28 22:39:15+08:00,time_diff,time_diff=7 days, 3:50:45
dt=2020-08-28 22:40:15+08:00,time_diff,time_diff=7 days, 3:49:45
dt=2020-08-28 22:41:15+08:00,time_diff,time_diff=7 days, 3:48:45
dt=2020-08-28 22:42:15+08:00,time_diff,time_diff=7 days, 3:47:45
dt=2020-08-28 22:43:15+08:00,time_diff,time_diff=7 days, 3:46:45
dt=2020-08-28 22:44:15+08:00,time_diff,time_diff=7 days, 3:45:45
dt=2020-08-28 22:45:15+08:00,time_diff,time_diff=7 days, 3:44:45
dt=2020-08-28 22:46:15+08:00,time_diff,time_diff=7 days, 3:43:45
dt=2020-08-28 22:47:15+08:00,time_diff,time_diff=7 days, 3:42:45
dt=2020-08-28 22:48:15+08:00,time_diff,time_diff=7 days, 3:41:45
dt=2020-08-28 22:49:15+08:00,time_diff,time_diff=7 days, 3:40:45
dt=2020-08-28 22:50:15+08:00,time_diff,time_diff=7 days, 3:39:45
dt=2020-08-28 22:51:15+08:00,time_diff,time_diff=7 days, 3:38:45
dt=2020-08-28 22:52:15+08:00,time_diff,time_diff=7 days, 3:37:45
dt=2020-08-28 22:53:15+08:00,time_diff,time_diff=7 days, 3:36:45
dt=2020-08-28 22:54:15+08:00,time_diff,time_diff=7 days, 3:35:45
dt=2020-08-28 22:55:15+08:00,time_diff,time_diff=7 days, 3:34:45
dt=2020-08-28 22:56:15+08:00,time_diff,time_diff=7 days, 3:33:45
dt=2020-08-28 22:57:15+08:00,time_diff,time_diff=7 days, 3:32:45
dt=2020-08-28 22:58:15+08:00,time_diff,time_diff=7 days, 3:31:45
dt=2020-08-28 22:59:15+08:00,time_diff,time_diff=7 days, 3:30:45
dt=2020-08-28 23:00:15+08:00,time_diff,time_diff=7 days, 3:29:45
dt=2020-08-28 23:01:15+08:00,time_diff,time_diff=7 days, 3:28:45
dt=2020-08-28 23:02:15+08:00,time_diff,time_diff=7 days, 3:27:45
dt=2020-08-28 23:03:15+08:00,time_diff,time_diff=7 days, 3:26:45
dt=2020-08-28 23:04:15+08:00,time_diff,time_diff=7 days, 3:25:45
dt=2020-08-28 23:05:15+08:00,time_diff,time_diff=7 days, 3:24:45
dt=2020-08-28 23:06:15+08:00,time_diff,time_diff=7 days, 3:23:45
dt=2020-08-28 23:07:15+08:00,time_diff,time_diff=7 days, 3:22:45
dt=2020-08-28 23:08:15+08:00,time_diff,time_diff=7 days, 3:21:45
dt=2020-08-28 23:09:15+08:00,time_diff,time_diff=7 days, 3:20:45
dt=2020-08-28 23:10:15+08:00,time_diff,time_diff=7 days, 3:19:45
dt=2020-08-28 23:11:15+08:00,time_diff,time_diff=7 days, 3:18:45
dt=2020-08-28 23:12:15+08:00,time_diff,time_diff=7 days, 3:17:45
dt=2020-08-28 23:13:15+08:00,time_diff,time_diff=7 days, 3:16:45
dt=2020-08-28 23:14:15+08:00,time_diff,time_diff=7 days, 3:15:45
dt=2020-08-28 23:15:15+08:00,time_diff,time_diff=7 days, 3:14:45
dt=2020-08-28 23:16:15+08:00,time_diff,time_diff=7 days, 3:13:45
dt=2020-08-28 23:17:15+08:00,time_diff,time_diff=7 days, 3:12:45
dt=2020-08-28 23:18:15+08:00,time_diff,time_diff=7 days, 3:11:45
dt=2020-08-28 23:19:15+08:00,time_diff,time_diff=7 days, 3:10:45
dt=2020-08-28 23:20:15+08:00,time_diff,time_diff=7 days, 3:09:45
dt=2020-08-28 23:21:15+08:00,time_diff,time_diff=7 days, 3:08:45
dt=2020-08-28 23:22:15+08:00,time_diff,time_diff=7 days, 3:07:45
dt=2020-08-28 23:23:15+08:00,time_diff,time_diff=7 days, 3:06:45
dt=2020-08-28 23:24:15+08:00,time_diff,time_diff=7 days, 3:05:45
dt=2020-08-28 23:25:15+08:00,time_diff,time_diff=7 days, 3:04:45
dt=2020-08-28 23:26:15+08:00,time_diff,time_diff=7 days, 3:03:45
dt=2020-08-28 23:27:15+08:00,time_diff,time_diff=7 days, 3:02:45
dt=2020-08-28 23:28:15+08:00,time_diff,time_diff=7 days, 3:01:45
dt=2020-08-28 23:29:15+08:00,time_diff,time_diff=7 days, 3:00:45
dt=2020-08-28 23:30:15+08:00,time_diff,time_diff=7 days, 2:59:45
dt=2020-08-28 23:31:15+08:00,time_diff,time_diff=7 days, 2:58:45
dt=2020-08-28 23:32:15+08:00,time_diff,time_diff=7 days, 2:57:45
dt=2020-08-28 23:33:15+08:00,time_diff,time_diff=7 days, 2:56:45
dt=2020-08-28 23:34:15+08:00,time_diff,time_diff=7 days, 2:55:45
dt=2020-08-28 23:35:15+08:00,time_diff,time_diff=7 days, 2:54:45
dt=2020-08-28 23:36:15+08:00,time_diff,time_diff=7 days, 2:53:45
dt=2020-08-28 23:37:15+08:00,time_diff,time_diff=7 days, 2:52:45
dt=2020-08-28 23:38:15+08:00,time_diff,time_diff=7 days, 2:51:45
dt=2020-08-28 23:39:15+08:00,time_diff,time_diff=7 days, 2:50:45
dt=2020-08-28 23:40:15+08:00,time_diff,time_diff=7 days, 2:49:45
dt=2020-08-28 23:41:15+08:00,time_diff,time_diff=7 days, 2:48:45
dt=2020-08-28 23:42:15+08:00,time_diff,time_diff=7 days, 2:47:45
dt=2020-08-28 23:43:15+08:00,time_diff,time_diff=7 days, 2:46:45
dt=2020-08-28 23:44:15+08:00,time_diff,time_diff=7 days, 2:45:45
dt=2020-08-28 23:45:15+08:00,time_diff,time_diff=7 days, 2:44:45
dt=2020-08-28 23:46:15+08:00,time_diff,time_diff=7 days, 2:43:45
dt=2020-08-28 23:47:15+08:00,time_diff,time_diff=7 days, 2:42:45
dt=2020-08-28 23:48:15+08:00,time_diff,time_diff=7 days, 2:41:45
dt=2020-08-28 23:49:15+08:00,time_diff,time_diff=7 days, 2:40:45
dt=2020-08-28 23:50:15+08:00,time_diff,time_diff=7 days, 2:39:45
dt=2020-08-28 23:51:15+08:00,time_diff,time_diff=7 days, 2:38:45
dt=2020-08-28 23:52:15+08:00,time_diff,time_diff=7 days, 2:37:45
dt=2020-08-28 23:53:15+08:00,time_diff,time_diff=7 days, 2:36:45
dt=2020-08-28 23:54:15+08:00,time_diff,time_diff=7 days, 2:35:45
dt=2020-08-28 23:55:15+08:00,time_diff,time_diff=7 days, 2:34:45
dt=2020-08-28 23:56:15+08:00,time_diff,time_diff=7 days, 2:33:45
dt=2020-08-28 23:57:15+08:00,time_diff,time_diff=7 days, 2:32:45
dt=2020-08-28 23:58:15+08:00,time_diff,time_diff=7 days, 2:31:45
dt=2020-08-28 23:59:15+08:00,time_diff,time_diff=7 days, 2:30:45
dt=2020-08-29 00:00:15+08:00,time_diff,time_diff=7 days, 2:29:45
dt=2020-08-29 00:01:15+08:00,time_diff,time_diff=7 days, 2:28:45
dt=2020-08-29 00:02:15+08:00,time_diff,time_diff=7 days, 2:27:45
dt=2020-08-29 00:03:15+08:00,time_diff,time_diff=7 days, 2:26:45
dt=2020-08-29 00:04:15+08:00,time_diff,time_diff=7 days, 2:25:45
dt=2020-08-29 00:05:15+08:00,time_diff,time_diff=7 days, 2:24:45
dt=2020-08-29 00:06:15+08:00,time_diff,time_diff=7 days, 2:23:45
dt=2020-08-29 00:07:15+08:00,time_diff,time_diff=7 days, 2:22:45
dt=2020-08-29 00:08:15+08:00,time_diff,time_diff=7 days, 2:21:45
dt=2020-08-29 00:09:15+08:00,time_diff,time_diff=7 days, 2:20:45
dt=2020-08-29 00:10:15+08:00,time_diff,time_diff=7 days, 2:19:45
dt=2020-08-29 00:11:15+08:00,time_diff,time_diff=7 days, 2:18:45
dt=2020-08-29 00:12:15+08:00,time_diff,time_diff=7 days, 2:17:45
dt=2020-08-29 00:13:15+08:00,time_diff,time_diff=7 days, 2:16:45
dt=2020-08-29 00:14:15+08:00,time_diff,time_diff=7 days, 2:15:45
dt=2020-08-29 00:15:15+08:00,time_diff,time_diff=7 days, 2:14:45
dt=2020-08-29 00:16:15+08:00,time_diff,time_diff=7 days, 2:13:45
dt=2020-08-29 00:17:15+08:00,time_diff,time_diff=7 days, 2:12:45
dt=2020-08-29 00:18:15+08:00,time_diff,time_diff=7 days, 2:11:45
dt=2020-08-29 00:19:15+08:00,time_diff,time_diff=7 days, 2:10:45
dt=2020-08-29 00:20:15+08:00,time_diff,time_diff=7 days, 2:09:45
dt=2020-08-29 00:21:15+08:00,time_diff,time_diff=7 days, 2:08:45
dt=2020-08-29 00:22:15+08:00,time_diff,time_diff=7 days, 2:07:45
dt=2020-08-29 00:23:15+08:00,time_diff,time_diff=7 days, 2:06:45
dt=2020-08-29 00:24:15+08:00,time_diff,time_diff=7 days, 2:05:45
dt=2020-08-29 00:25:15+08:00,time_diff,time_diff=7 days, 2:04:45
dt=2020-08-29 00:26:15+08:00,time_diff,time_diff=7 days, 2:03:45
dt=2020-08-29 00:27:15+08:00,time_diff,time_diff=7 days, 2:02:45
dt=2020-08-29 00:28:15+08:00,time_diff,time_diff=7 days, 2:01:45
dt=2020-08-29 00:29:15+08:00,time_diff,time_diff=7 days, 2:00:45
dt=2020-08-29 00:30:15+08:00,time_diff,time_diff=7 days, 1:59:45
dt=2020-08-29 00:31:15+08:00,time_diff,time_diff=7 days, 1:58:45
dt=2020-08-29 00:32:15+08:00,time_diff,time_diff=7 days, 1:57:45
dt=2020-08-29 00:33:15+08:00,time_diff,time_diff=7 days, 1:56:45
dt=2020-08-29 00:34:15+08:00,time_diff,time_diff=7 days, 1:55:45
dt=2020-08-29 00:35:15+08:00,time_diff,time_diff=7 days, 1:54:45
dt=2020-08-29 00:36:15+08:00,time_diff,time_diff=7 days, 1:53:45
dt=2020-08-29 00:37:15+08:00,time_diff,time_diff=7 days, 1:52:45
dt=2020-08-29 00:38:15+08:00,time_diff,time_diff=7 days, 1:51:45
dt=2020-08-29 00:39:15+08:00,time_diff,time_diff=7 days, 1:50:45
dt=2020-08-29 00:40:15+08:00,time_diff,time_diff=7 days, 1:49:45
dt=2020-08-29 00:41:15+08:00,time_diff,time_diff=7 days, 1:48:45
dt=2020-08-29 00:42:15+08:00,time_diff,time_diff=7 days, 1:47:45
dt=2020-08-29 00:43:15+08:00,time_diff,time_diff=7 days, 1:46:45
dt=2020-08-29 00:44:15+08:00,time_diff,time_diff=7 days, 1:45:45
dt=2020-08-29 00:45:15+08:00,time_diff,time_diff=7 days, 1:44:45
dt=2020-08-29 00:46:15+08:00,time_diff,time_diff=7 days, 1:43:45
dt=2020-08-29 00:47:15+08:00,time_diff,time_diff=7 days, 1:42:45
dt=2020-08-29 00:48:15+08:00,time_diff,time_diff=7 days, 1:41:45
dt=2020-08-29 00:49:15+08:00,time_diff,time_diff=7 days, 1:40:45
dt=2020-08-29 00:50:15+08:00,time_diff,time_diff=7 days, 1:39:45
dt=2020-08-29 00:51:15+08:00,time_diff,time_diff=7 days, 1:38:45
dt=2020-08-29 00:52:15+08:00,time_diff,time_diff=7 days, 1:37:45
dt=2020-08-29 00:53:15+08:00,time_diff,time_diff=7 days, 1:36:45
dt=2020-08-29 00:54:15+08:00,time_diff,time_diff=7 days, 1:35:45
dt=2020-08-29 00:55:15+08:00,time_diff,time_diff=7 days, 1:34:45
dt=2020-08-29 00:56:15+08:00,time_diff,time_diff=7 days, 1:33:45
dt=2020-08-29 00:57:15+08:00,time_diff,time_diff=7 days, 1:32:45
dt=2020-08-29 00:58:15+08:00,time_diff,time_diff=7 days, 1:31:45
dt=2020-08-29 00:59:15+08:00,time_diff,time_diff=7 days, 1:30:45
dt=2020-08-29 01:00:15+08:00,time_diff,time_diff=7 days, 1:29:45
dt=2020-08-29 01:01:15+08:00,time_diff,time_diff=7 days, 1:28:45
dt=2020-08-29 01:02:15+08:00,time_diff,time_diff=7 days, 1:27:45
dt=2020-08-29 01:03:15+08:00,time_diff,time_diff=7 days, 1:26:45
dt=2020-08-29 01:04:15+08:00,time_diff,time_diff=7 days, 1:25:45
dt=2020-08-29 01:05:15+08:00,time_diff,time_diff=7 days, 1:24:45
dt=2020-08-29 01:06:15+08:00,time_diff,time_diff=7 days, 1:23:45
dt=2020-08-29 01:07:15+08:00,time_diff,time_diff=7 days, 1:22:45
dt=2020-08-29 01:08:15+08:00,time_diff,time_diff=7 days, 1:21:45
dt=2020-08-29 01:09:15+08:00,time_diff,time_diff=7 days, 1:20:45
dt=2020-08-29 01:10:15+08:00,time_diff,time_diff=7 days, 1:19:45
dt=2020-08-29 01:11:15+08:00,time_diff,time_diff=7 days, 1:18:45
dt=2020-08-29 01:12:15+08:00,time_diff,time_diff=7 days, 1:17:45
dt=2020-08-29 01:13:15+08:00,time_diff,time_diff=7 days, 1:16:45
dt=2020-08-29 01:14:15+08:00,time_diff,time_diff=7 days, 1:15:45
dt=2020-08-29 01:15:15+08:00,time_diff,time_diff=7 days, 1:14:45
dt=2020-08-29 01:16:15+08:00,time_diff,time_diff=7 days, 1:13:45
dt=2020-08-29 01:17:15+08:00,time_diff,time_diff=7 days, 1:12:45
dt=2020-08-29 01:18:15+08:00,time_diff,time_diff=7 days, 1:11:45
dt=2020-08-29 01:19:15+08:00,time_diff,time_diff=7 days, 1:10:45
dt=2020-08-29 01:20:15+08:00,time_diff,time_diff=7 days, 1:09:45
dt=2020-08-29 01:21:15+08:00,time_diff,time_diff=7 days, 1:08:45
dt=2020-08-29 01:22:15+08:00,time_diff,time_diff=7 days, 1:07:45
dt=2020-08-29 01:23:15+08:00,time_diff,time_diff=7 days, 1:06:45
dt=2020-08-29 01:24:15+08:00,time_diff,time_diff=7 days, 1:05:45
dt=2020-08-29 01:25:15+08:00,time_diff,time_diff=7 days, 1:04:45
dt=2020-08-29 01:26:15+08:00,time_diff,time_diff=7 days, 1:03:45
dt=2020-08-29 01:27:15+08:00,time_diff,time_diff=7 days, 1:02:45
dt=2020-08-29 01:28:15+08:00,time_diff,time_diff=7 days, 1:01:45
dt=2020-08-29 01:29:15+08:00,time_diff,time_diff=7 days, 1:00:45
dt=2020-08-29 01:30:15+08:00,time_diff,time_diff=7 days, 0:59:45
dt=2020-08-29 01:31:15+08:00,time_diff,time_diff=7 days, 0:58:45
dt=2020-08-29 01:32:15+08:00,time_diff,time_diff=7 days, 0:57:45
dt=2020-08-29 01:33:15+08:00,time_diff,time_diff=7 days, 0:56:45
dt=2020-08-29 01:34:15+08:00,time_diff,time_diff=7 days, 0:55:45
dt=2020-08-29 01:35:15+08:00,time_diff,time_diff=7 days, 0:54:45
dt=2020-08-29 01:36:15+08:00,time_diff,time_diff=7 days, 0:53:45
dt=2020-08-29 01:37:15+08:00,time_diff,time_diff=7 days, 0:52:45
dt=2020-08-29 01:38:15+08:00,time_diff,time_diff=7 days, 0:51:45
dt=2020-08-29 01:39:15+08:00,time_diff,time_diff=7 days, 0:50:45
dt=2020-08-29 01:40:15+08:00,time_diff,time_diff=7 days, 0:49:45
dt=2020-08-29 01:41:15+08:00,time_diff,time_diff=7 days, 0:48:45
dt=2020-08-29 01:42:15+08:00,time_diff,time_diff=7 days, 0:47:45
dt=2020-08-29 01:43:15+08:00,time_diff,time_diff=7 days, 0:46:45
dt=2020-08-29 01:44:15+08:00,time_diff,time_diff=7 days, 0:45:45
dt=2020-08-29 01:45:15+08:00,time_diff,time_diff=7 days, 0:44:45
dt=2020-08-29 01:46:15+08:00,time_diff,time_diff=7 days, 0:43:45
dt=2020-08-29 01:47:15+08:00,time_diff,time_diff=7 days, 0:42:45
dt=2020-08-29 01:48:15+08:00,time_diff,time_diff=7 days, 0:41:45
dt=2020-08-29 01:49:15+08:00,time_diff,time_diff=7 days, 0:40:45
dt=2020-08-29 01:50:15+08:00,time_diff,time_diff=7 days, 0:39:45
dt=2020-08-29 01:51:15+08:00,time_diff,time_diff=7 days, 0:38:45
dt=2020-08-29 01:52:15+08:00,time_diff,time_diff=7 days, 0:37:45
dt=2020-08-29 01:53:15+08:00,time_diff,time_diff=7 days, 0:36:45
dt=2020-08-29 01:54:15+08:00,time_diff,time_diff=7 days, 0:35:45
dt=2020-08-29 01:55:15+08:00,time_diff,time_diff=7 days, 0:34:45
dt=2020-08-29 01:56:15+08:00,time_diff,time_diff=7 days, 0:33:45
dt=2020-08-29 01:57:15+08:00,time_diff,time_diff=7 days, 0:32:45
dt=2020-08-29 01:58:15+08:00,time_diff,time_diff=7 days, 0:31:45
dt=2020-08-29 01:59:15+08:00,time_diff,time_diff=7 days, 0:30:45
dt=2020-08-29 02:00:15+08:00,time_diff,time_diff=7 days, 0:29:45
dt=2020-08-29 02:01:15+08:00,time_diff,time_diff=7 days, 0:28:45
dt=2020-08-29 02:02:15+08:00,time_diff,time_diff=7 days, 0:27:45
dt=2020-08-29 02:03:15+08:00,time_diff,time_diff=7 days, 0:26:45
dt=2020-08-29 02:04:15+08:00,time_diff,time_diff=7 days, 0:25:45
dt=2020-08-29 02:05:15+08:00,time_diff,time_diff=7 days, 0:24:45
dt=2020-08-29 02:06:15+08:00,time_diff,time_diff=7 days, 0:23:45
dt=2020-08-29 02:07:15+08:00,time_diff,time_diff=7 days, 0:22:45
dt=2020-08-29 02:08:15+08:00,time_diff,time_diff=7 days, 0:21:45
dt=2020-08-29 02:09:15+08:00,time_diff,time_diff=7 days, 0:20:45
dt=2020-08-29 02:10:15+08:00,time_diff,time_diff=7 days, 0:19:45
dt=2020-08-29 02:11:15+08:00,time_diff,time_diff=7 days, 0:18:45
dt=2020-08-29 02:12:15+08:00,time_diff,time_diff=7 days, 0:17:45
dt=2020-08-29 02:13:15+08:00,time_diff,time_diff=7 days, 0:16:45
dt=2020-08-29 02:14:15+08:00,time_diff,time_diff=7 days, 0:15:45
dt=2020-08-29 02:15:15+08:00,time_diff,time_diff=7 days, 0:14:45
dt=2020-08-29 02:16:15+08:00,time_diff,time_diff=7 days, 0:13:45
dt=2020-08-29 02:17:15+08:00,time_diff,time_diff=7 days, 0:12:45
dt=2020-08-29 02:18:15+08:00,time_diff,time_diff=7 days, 0:11:45
dt=2020-08-29 02:19:15+08:00,time_diff,time_diff=7 days, 0:10:45
dt=2020-08-29 02:20:15+08:00,time_diff,time_diff=7 days, 0:09:45
dt=2020-08-29 02:21:15+08:00,time_diff,time_diff=7 days, 0:08:45
dt=2020-08-29 02:22:15+08:00,time_diff,time_diff=7 days, 0:07:45
dt=2020-08-29 02:23:15+08:00,time_diff,time_diff=7 days, 0:06:45
dt=2020-08-29 02:24:15+08:00,time_diff,time_diff=7 days, 0:05:45
dt=2020-08-29 02:25:15+08:00,time_diff,time_diff=7 days, 0:04:45
dt=2020-08-29 02:26:15+08:00,time_diff,time_diff=7 days, 0:03:45
dt=2020-08-29 02:27:15+08:00,time_diff,time_diff=7 days, 0:02:45
dt=2020-08-29 02:28:15+08:00,time_diff,time_diff=7 days, 0:01:45
dt=2020-08-29 02:29:15+08:00,time_diff,time_diff=7 days, 0:00:45

4.2.1 什么时候是要放假了?

当 time_diff=7 days, 0:00:00的时候就是了

Administrator
avatar
加入于:
帖子: 4502
声望: 321

非常高产啊,给你加个精华

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】