python2 计算当月,当周,当日起始结束时间点

# 返回 utc ms


def get_current_time_in_beijing():
    # 获取当前时间并转换为北京时间
    beijing_tz = pytz.timezone('Asia/Shanghai')
    current_time = datetime.datetime.now(beijing_tz)
    return current_time


def get_utc_milliseconds_today():
    now = get_current_time_in_beijing()
    start_of_day = datetime.datetime(now.year, now.month, now.day)
    start_utc_milliseconds = int(time.mktime(start_of_day.timetuple()) * 1000)
    end_of_day = start_of_day + datetime.timedelta(days=1) - datetime.timedelta(microseconds=1)
    end_utc_milliseconds = int(time.mktime(end_of_day.timetuple()) * 1000)
    return start_utc_milliseconds, end_utc_milliseconds


def get_week_start_end():
    now = get_current_time_in_beijing()
    start_of_week = now - datetime.timedelta(days=now.weekday())   # 本周的第一天(周一)
    end_of_week = start_of_week + datetime.timedelta(days=6)

    # 设置时分秒
    start_of_week = start_of_week.replace(hour=00, minute=00, second=00)
    end_of_week = end_of_week.replace(hour=23, minute=59, second=59)

    start_utc_ms = int(time.mktime(start_of_week.timetuple()) * 1000)
    end_utc_ms = int(time.mktime(end_of_week.timetuple()) * 1000)
    return start_utc_ms, end_utc_ms


def get_utc_milliseconds_month():
    now = get_current_time_in_beijing()
    first_day = datetime.datetime(now.year, now.month, 1)
    first_day_utc_milliseconds = int(time.mktime(first_day.timetuple()) * 1000)
    if now.month == 12:
        last_day = datetime.datetime(now.year + 1, 1, 1) - datetime.timedelta(seconds=1)
    else:
        last_day = datetime.datetime(now.year, now.month + 1, 1) - datetime.timedelta(seconds=1)

    last_day_utc_milliseconds = int(time.mktime(last_day.timetuple()) * 1000)
    return first_day_utc_milliseconds, last_day_utc_milliseconds




if __name__ == '__main__':
    st, et = get_week_start_end()
    print 'week:', st, et
    print pubfun.ms_to_str(st), pubfun.ms_to_str(et)

    st, et = get_utc_milliseconds_today()
    print 'today:', st, et
    print pubfun.ms_to_str(st), pubfun.ms_to_str(et)

    st, et = get_utc_milliseconds_month()
    print 'month:', st, et
    print pubfun.ms_to_str(st), pubfun.ms_to_str(et)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值