python獲取指定日期和轉換的整理


一、代碼

import datetime
import calendar
from chinese_calendar import is_workday
import pandas as pd


# 判斷是否為星期1
def is_monday():
    today = datetime.datetime.now().weekday()
    if today == 0:
        return True


# 判斷是否為星期2
def is_tuesday():
    today = datetime.datetime.now().weekday()
    if today == 1:
        return True


# 判斷是否為星期3
def is_wednesday():
    today = datetime.datetime.now().weekday()
    if today == 2:
        return True


# 判斷是否為星期4
def is_thursday():
    today = datetime.datetime.now().weekday()
    if today == 3:
        return True


# 判斷是否為星期5
def is_friday():
    today = datetime.datetime.now().weekday()
    if today == 4:
        return True


# 判斷是否為星期6
def is_saturday():
    today = datetime.datetime.now().weekday()
    if today == 5:
        return True


# 判斷是否為星期日
def is_sunday():
    today = datetime.datetime.now().weekday()
    if today == 6:
        return True


# 判斷上幾工作日
def is_word_day(date_num):
    day = datetime.datetime.now() + datetime.timedelta(days=date_num)
    res = is_workday(day)
    if res:
        return day.strftime("%Y-%m-%d")
    else:
        date_num += 1
        return is_word_day(date_num)


# 上一自然日
def up_day():
    return (datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y-%m-%d")


# 獲取指定前后天
def get_day(date_num):
    day = datetime.datetime.now() + datetime.timedelta(days=date_num)
    return day.day


# excel中5位日期數字的轉換
def turn_time(delta_days):
    """
    delta_days:就是那個五位數
    """
    # 上一步得到的就是一個pandas的時間戳形式,然后我們轉換成合適的時間格式就好了
    # Timestamp('1899-12-30 00:00:00')
    real_time = pd.to_datetime('1899-12-30') + pd.Timedelta(str(delta_days) + 'D')  # eg:'44701D'
    return real_time.strftime("%Y/%m/%d")


# 獲取上個月末
def before_month_last_day():
    today = datetime.datetime.now()
    first = datetime.date(day=1, month=today.month, year=today.year)
    last_day = first - datetime.timedelta(days=1)
    return last_day.strftime("%Y%m%d")


# 獲取上幾工作日
def get_2up_work(up_date=1, is_work=0, date=1):
    '''
    :param up_date:固定參數值
    :param is_work:固定參數值
:param date:可以用來調整前幾天工作日 :return:
''' day = datetime.datetime.now() + datetime.timedelta(days=-up_date) res = is_workday(day) if res: if is_work == date: return day.strftime("%Y%m%d")
is_work+=1
up_date+=1
return get_2up_work(up_date, is_work,date) else: up_date += 1 return get_2up_work(up_date, is_work,date) # 獲取上個月初 def before_month_fristday(): today = datetime.datetime.now()
if today.month==1:
first=datetime.date(day=1,month=12,year=today.year-1)
else: first
= datetime.date(day=1, month=today.month - 1, year=today.year) return first.strftime("%Y%m%d") # 獲取上個星期幾 def get_up_day(day=1): ''' :param day: 獲取上個星期幾,1-7 :return: ''' cal_dict = {1: calendar.MONDAY, 2: calendar.TUESDAY, 3: calendar.WEDNESDAY, 4: calendar.THURSDAY, 5: calendar.FRIDAY, 6: calendar.SATURDAY, 7: calendar.SUNDAY} date = datetime.datetime.now() oneday = datetime.timedelta(days=1) while date.weekday() != cal_dict.get(day, calendar.MONDAY): date -= oneday return date.strftime("%Y%m%d")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM