zzda-pkg 0.0.2
library for kakaostyle data analytics
Requires Python: >=3.6

# ZZDA
**카카오스타일 DA 챕터를 위한 파이썬 라이브러리**

## 패키지 다운받는 법
1. 패키지를 다운받는다.  
주피터 노트북인 경우 ```$ !pip install zzda-pkg```  
Console인 경우 ```$ pip install zzda-pkg```

2. import 하여 사용한다.
date 관련 모듈인 경우: ```from zzda import zzdate```

## 모듈 설명
### zzdate
- ```kst_now() -> datetime``` : KST 기준 현재 시각을 datetime의 포맷으로 반환한다.  
    ```python
    print(kst_now())
    >>> 2022-12-30 16:11:00.238925
    print(type(kst_now()))
    >>> <class 'datetime.datetime'>
    ```


- ```today_kst() -> str``` : KST 기준 오늘 날짜를 "%Y-%m-%d" 의 포맷으로 반환한다.  
    ```python
    print(today_kst()) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> "2022-12-30"
    ```


- ```today_hour_kst() -> str``` : KST 기준 현재 hour를 str로 반환한다.  
    ```python
    print(today_hour_kst()) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> "16"
    ```


- ```yesterday_kst() -> str``` : today(KST)를 기준으로 1일 전의 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.  
    ```python
    print(yesterday_kst()) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> "2022-12-29"
    ```


- ```day_before_yesterday_kst() -> str``` : today(KST)를 기준으로 2일 전의 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.  
    ```python
    print(day_before_yesterday_kst()) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> "2022-12-28"
    ```


- ```yesterday_datetime_kst() -> str``` : today(KST)를 기준으로 1일 전의 날짜를 “'%Y-%m-%d 00:00:00' AND '"%Y-%m-%d 23:59:59'” 의 포맷으로 반환한다.  
    ```python
    print(yesterday_datetime_kst()) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> '2022-12-29 00:00:00' AND '2022-12-29 23:59:59'
    ```
    

- ```yesterday_without_hyphen_kst() -> str``` : today(KST)를 기준으로 1일 전의 날짜를 "%Y%m%d" 의 포맷으로 반환한다.  
    ```python
    print(yesterday_without_hyphen_kst()) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> "20221229"
    ```


- ```yesterday_datetime_utc() -> str``` : today(KST)를 기준으로 1일 전의 날짜를 UTC시간으로 하여 “'%Y-%m-%d 00:00:00' AND '"%Y-%m-%d 23:59:59'” 의 포맷으로 반환한다.  
    ```python
    print(yesterday_datetime_utc()) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> "'2022-12-28 15:00:00' AND '2022-12-29 14:59:59'"
    ```


- ```format_date(target_date: date) -> str``` : target_date(type: date)를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(format_date(date(2022, 12, 30)))
    >>> "2022-12-30"
    ```


- ```parse_date(date_str: str) -> date``` : target_date(type: str)를 date type으로 반환한다.
    ```python
    print(parse_date("2022-12-30"))
    >>> 2022-12-30
    print(type(parse_date("2022-12-30")))
    >>> <class 'datetime.date'>
    ```

- ```n_day_ago_kst(n: int) -> str``` : today(KST)를 기준으로 n일 전의 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(n_day_ago_kst(3)) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> "2022-12-27"
    ```


- ```day_ago_7_kst() -> str``` : today(KST)를 기준으로 7일 전의 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(day_ago_7_kst()) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> "2022-12-23"
    ```


- ```day_ago_14_kst() -> str``` : today(KST)를 기준으로 14일 전의 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(day_ago_14_kst()) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> "2022-12-16"
    ```


- ```day_ago_30_kst() -> str``` : today(KST)를 기준으로 30일 전의 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(day_ago_30_kst()) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> "2022-11-30"
    ```


- ```day_ago_60_kst() -> str``` : today(KST)를 기준으로 60일 전의 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(day_ago_60_kst()) # 현재 시각: 2022-12-30 16:11:00.238925
    >>> "2022-10-31"
    ```


- ```add_n_days(n: int, target_date: str) -> str``` : target_date를 기준으로 n일 후의 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(add_n_days(3, "2023-01-02"))
    >>> "2023-01-05"
    print(add_n_days(-7, "2023-01-02"))
    >>> "2022-12-26"
    ```


- ```add_n_months(n: int, target_date: str) -> str``` : target_date의 n월 후의 일자를 “%Y-%m-%d” 의 포맷으로 반환한다.  
    ```python
    print(add_n_months(3, "2022-03-05"))
    >>> "2022-06-05"
    print(add_n_months(-2, "2022-03-05"))
    >>> "2022-01-05"
    ```
    * warning: 29, 30, 31일의 경우 ```n month```를 더하였을 때, 29/30/31일이 존재하지 않는 달이라면 해당 달의 말일자를 반환한다.  
    ```python
    print(add_n_months(2, "2022-12-30"))
    >>> "2023-02-28"
    print(add_n_months(-3, "2022-12-31"))
    >>> "2022-09-30"
    ```


- ```get_next_month(target_date: str) -> str``` : target_date의 익월 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(get_next_month("2022-12-25"))
    >>> "2023-01-25"
    print(get_next_month("2023-02-04"))
    >>> "2023-03-04"
    ```
    * warning: 29, 30, 31일의 경우 익월에 29/30/31일이 존재하지 않는다면 익월의 말일자를 반환한다.  
    ```python
    print(get_next_month("2023-01-31"))
    >>> "2023-02-28"
    ```


- ```get_last_month(target_date: str) -> str``` : target_date의 전월 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(get_last_month("2022-12-25"))
    >>> "2022-11-25"
    print(get_last_month("2023-01-02"))
    >>> "2022-12-02"
    ```
    * warning: 29, 30, 31일의 경우 전월에 29/30/31일이 존재하지 않는다면 전월의 말일자를 반환한다.  
    ```python
    print(get_last_month("2023-03-31"))
    >>> "2023-02-28"
    ```


- ```add_n_years(n: int, target_date: str) -> str``` : target_date의 n년 후의 일자를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(add_n_years(3, "2022-12-25"))
    >>> "2025-12-25"
    print(add_n_years(-5, "2023-01-02"))
    >>> "2018-01-02"
    ```
    * warning: 2월 29일의 경우 n년 후에 2월 29일이 존재하지 않는다면 해당 연도 2월의 말일자를 반환한다.
    ```python
    print(add_n_years(1, "2024-02-29"))
    >>> "2025-02-28"
    ```


- ```get_next_year(target_date: str) -> str``` : target_date의 내년 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(get_next_year("2022-12-25"))
    >>> "2023-12-25"
    print(get_next_year("2023-01-02"))
    >>> "2024-01-02"
    ```
    * warning: 2월 29일의 경우 내년에 2월 29일이 존재하지 않는다면 내년 2월의 말일자를 반환한다.
    ```python
    print(get_next_year("2024-02-29"))
    >>> "2025-02-28"
    ```


- ```get_last_year(target_date: str) -> str``` : target_date의 전년 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(get_last_year("2022-12-25"))
    >>> "2021-12-25"
    print(get_last_year("2023-01-02"))
    >>> "2022-01-02"
    ```
    * warning: 2월 29일의 경우 내년에 2월 29일이 존재하지 않는다면 내년 2월의 말일자를 반환한다.
    ```python
    print(get_last_year("2024-02-29"))
    >>> "2023-02-28"
    ```


- ```get_first_date_of_target(target_date: str) -> str``` : target_date 월의 1일자 날짜를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(get_first_date_of_target("2023-01-25"))
    >>> "2023-01-01"
    print(get_first_date_of_target("2023-03-01"))
    >>> "2023-03-01"
    ```


- ```get_last_date_of_target(target_date: str) -> str``` : target_date 월의 마지막 일자를 “%Y-%m-%d” 의 포맷으로 반환한다.
    ```python
    print(get_last_date_of_target("2023-01-25"))
    >>> "2023-01-31"
    print(get_last_date_of_target("2023-02-28"))
    >>> "2023-02-28"
    ```