import pytz
import random
from datetime import datetime, timedelta

NOW = datetime.now()


def tzlc(dt, truncate_to_sec=True):
    if dt is None:
        return None
    if truncate_to_sec:
        dt = dt.replace(microsecond=0)
    return pytz.timezone('Asia/Shanghai').localize(dt)


def eta_2_push_time(eta):
    if eta:
        eta = datetime.strptime(eta, '%Y-%m-%d %H:%M:%S')
        eta = tzlc(eta)
        return int((eta - datetime.fromtimestamp(0, pytz.timezone("UTC"))).total_seconds())
    else:
        push_time = None
    return push_time


def get_rand_time(hourlow=0, hourup=13, minutelow=0, miniteup=60):
    hours = random.randint(hourlow, hourup)
    minutes = random.randint(minutelow, miniteup)
    now_time = NOW + timedelta(hours=hours, minutes=minutes)
    time = eta_2_push_time(now_time.strftime("%Y-%m-%d %H:%M:%S"))
    return datetime.fromtimestamp(time)