#!/usr/bin/python3.6
# -*- coding: utf-8 -*-
#
# Copyright (C) 2022 #
# @Time    : 2022/3/26 16:20
# @Author  : ming
# @Email   : zhangdongming@asj6.wecom.work
# @File    : LocalDateTimeUtil.py
# @Software: PyCharm
import datetime
import logging
import time
import pendulum


def get_last_first_date_and_last_date(n):
    """
    获取前n周开始时间和结束时间，参数n：代表前n周
    """
    now = datetime.datetime.now()
    # 上周第一天和最后一天
    before_n_week_start = now - datetime.timedelta(days=now.weekday() + 7 * n, hours=now.hour, minutes=now.minute,
                                                   seconds=now.second, microseconds=now.microsecond)
    # last_week_end = now - timedelta(days=now.weekday() + 1)
    before_n_week_end = before_n_week_start + datetime.timedelta(days=6, hours=23, minutes=59, seconds=59)
    return before_n_week_start, before_n_week_end


def get_today_date(timestamp=False):
    """
    返回当天开始时间和结束时间
    Args:
        timestamp 是否返回时间戳
    returns:
        zero_today ,last_today
    """

    now = datetime.datetime.now()
    zero_today = now - datetime.timedelta(hours=now.hour, minutes=now.minute, seconds=now.second,
                                          microseconds=now.microsecond)
    last_today = zero_today + datetime.timedelta(hours=23, minutes=59, seconds=59)
    if timestamp:
        zero_today = int(time.mktime(zero_today.timetuple()))
        last_today = int(time.mktime(last_today.timetuple()))
        return zero_today, last_today
    return zero_today, last_today


def get_last_month():
    """
    获取前一个月时间
    returns:
        last_month_date
    """
    today = datetime.date.today()  # 1. 获取「今天」
    last_month = today.replace(month=today.month - 1)  # 2.获取前一个月
    last_month_date = last_month.strftime("%Y-%m-%d %H:%M:%S")
    return last_month_date


def date_to_week(str_date):
    """
    日期获取星期几
    @param str_date 日期 例：2022-03-03
    @return: int 1-7
    """
    logger = logging.getLogger('info')
    if str_date:
        logger.info('-----进入日期转星期-----')
        dt = pendulum.parse(str_date).day_of_week
        dt = 7 if dt == 0 else dt
        logger.info('---根据pendulum模块解析后=星期{}'.format(dt))
        return dt
    return datetime.datetime.now().weekday() + 1


if __name__ == "__main__":
    print('')
