def multi_days_time_seq(time_seq_dict, period_length=7):
    """
    :param time_seq_dict:
    :param period_length: 考察的时间,单位为天数, 日期之间未必连续,因为在不连续的日期之间补上24 * 缺少的天数个0
    如时间序列中的日期为
    :return:
    """
    sorted_time_seq_tuple = sorted(time_seq_dict.items(), reverse=False)
    sorted_time_seq = np.array([])

    # print("=======================stary===============================")
    # print("len of sorted_time_seq_tuple: %s" % (len(sorted_time_seq_tuple)))
    # 取出有序时间序列元组中的第一个日期,若它在记录起始日期之后,则计算它与起始日期的距离,并加上相应个数的0
    ret_start_date = str(
        sorted_time_seq_tuple[0]
        [0])  # 这里的sorted_time_seq_tuple[0][0]为什么会是Numpy.int64类型呢
    seq_start_date = days_offset(change_date_str_format(PERIOD_START),
                                 -1 * (DAY_RANGE - 1))
    days_gap = differate_one_day_more(seq_start_date, ret_start_date)
    if days_gap >= 0:  # 说明有序时间序列中的起始日期与记录起始日期不同
        tmp_time_seq = np.zeros(HOURS_IN_ONE_DAY * (days_gap + 1))
        sorted_time_seq = np.append(sorted_time_seq, tmp_time_seq)
        # print("add %s days zero" % days_gap)
    # print("ret_start_date: %s, seq_start_date: %s, days_gap: %s" % (ret_start_date, seq_start_date, days_gap))

    for index in range(len(sorted_time_seq_tuple)):
        date_str = str(sorted_time_seq_tuple[index][0])
        time_seq = sorted_time_seq_tuple[index][1]
        if index:
            day_before = str(sorted_time_seq_tuple[index - 1][0])
            days_gap = differate_one_day_more(day_before, date_str)
            # print("day_before: ", day_before, "date_str: ", date_str, "days_gap: ", days_gap)
            # 两个相邻的时间序列之间相差不止一天, 那么缺少的这些天都是24个0,即这两个日期之间的日期中的查询次数都是0
            if days_gap >= 0:
                tmp_time_seq = np.zeros(HOURS_IN_ONE_DAY * days_gap)
                sorted_time_seq = np.append(sorted_time_seq, tmp_time_seq)
        sorted_time_seq = np.append(sorted_time_seq, time_seq)
        # print("date_str: %s, len of sorted_time_seq: %s" % (date_str, len(sorted_time_seq)))

    # 取出有序时间序列元组中的最后一个日期,若它在记录截止日期之前,则计算它与截止日期的距离,并加上相应个数的0
    ret_end_date = str(
        sorted_time_seq_tuple[-1]
        [0])  # 这里的sorted_time_seq_tuple[0][0]为什么会是Numpy.int64类型呢
    seq_end_date = change_date_str_format(PERIOD_START)
    days_gap = differate_one_day_more(ret_end_date, seq_end_date)
    if days_gap >= 0:  # 说明有序时间序列中的截止日期与记录截止日期不同
        tmp_time_seq = np.zeros(HOURS_IN_ONE_DAY * (days_gap + 1))
        sorted_time_seq = np.append(sorted_time_seq, tmp_time_seq)
    # print("ret_end_date: %s, seq_end_date: %s, days_gap: %s" % (ret_end_date, seq_end_date, days_gap))

    # print("192 len of sorted_time_seq: %s" % (len(sorted_time_seq)))
    return sorted_time_seq
示例#2
0
def date_younger_than_start_date(date_str):
    seq_end_date = change_date_str_format(START_DAY)
    if differate_one_day_more(seq_end_date, date_str) >= 0:
        return True
    return False
示例#3
0
def date_older_than_start_date(date_str):
    seq_start_date = days_offset(change_date_str_format(START_DAY),
                                 -1 * DAY_RANGE)
    if differate_one_day_more(seq_start_date, date_str) >= 0:
        return False
    return True