python 時間加減


 

# 時間加減,月/日
import calendar
import math

def get_recent_month(dt, months):
    # 這里的months 參數傳入的是正數表示往后推,負數表示往前推
    month = dt.month - 1 + months
    year = dt.year + math.floor(month / 12)
    month = month % 12 + 1
    day = min(dt.day, calendar.monthrange(year, month)[1])
    recent_date = datetime.date(year, month, day).strftime('%Y%m%d')
    return recent_date

def get_recent_day(dt, days):
    # days 負數是向前推,正數是向后推
    # datetime.timedelta 兩個時間之間的時間差
    delta = datetime.timedelta(days=days)
    # 獲取delta前的時間
    beginPushDate = (dt + delta).strftime('%Y%m%d')
    return beginPushDate

dt = datetime.datetime.strptime(str('20190101'), '%Y%m%d')
# 當前日期前推3個月
print(get_recent_month(dt, -3))
# 當前日期后推3個月
print(get_recent_month(dt, 3))
# 當前日期前推3天
print(get_recent_day(dt, -3))
# 當前日期后推3天
print(get_recent_day(dt, 3))

 

#時間加減 周/日/時/分/毫秒
import datetime

print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
print(datetime.date.fromtimestamp(time.time()) )  # 時間戳直接轉成日期格式 2016-08-19
print(datetime.datetime.now() )
print(datetime.datetime.now() + datetime.timedelta(3)) #當前時間+3天
print(datetime.datetime.now() + datetime.timedelta(-3)) #當前時間-3天
print(datetime.datetime.now() + datetime.timedelta(hours=3)) #當前時間+3小時
print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #當前時間+30分

c_time  = datetime.datetime.now()
print(c_time.replace(year=2019, month=3, day=20,hour=2, minute=3)) #時間替換

 

import datetime
import calendar
import math

def get_now_dateTime():
    '''
    獲取當前時間 xx-xx-xx xx:xx:xx
    '''
    time_now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    return time_now

def get_endLastYear(endDate):
    '''
    獲取上年年末,'20190321'上一年年末是'20181231'
    :param endDate:
    :return:
    '''
    beginYear_temp = int(str(endDate)[0:4]) - 1
    beginYear = str(beginYear_temp) + '1231'
    return beginYear

def get_beginYearDate(endDate):
    '''
    本年年初,'20190321'年初'20190101'
    :param endDate:
    :return:
    '''
    beginYear_temp = int(str(endDate)[0:4])
    beginYear = str(beginYear_temp) + '0101'
    return beginYear

def get_beginPushDate(bizDate, days):
    '''
    獲取beginDate的days天前的時間
    :param bizDate:
    :param days: days 負數是向前推,正數是向后推
    :return:
    '''
    dt = datetime.datetime.strptime(str(bizDate), '%Y%m%d')
    # datetime.timedelta 兩個時間之間的時間差
    delta = datetime.timedelta(days=days)
    # 獲取delta前的時間
    beginPushDate = (dt + delta).strftime('%Y%m%d')
    return beginPushDate

def get_recent_month(bizDate, months):
    '''
    獲取bizDate的months月前的時間
    :param bizDate:
    :param months: months 參數傳入的是正數表示往后推,負數表示往前推
    :return:
    '''
    dt = datetime.datetime.strptime(str(bizDate), '%Y%m%d')
    month = dt.month - 1 + months
    year = dt.year + math.floor(month / 12)
    month = month % 12 + 1
    day = min(dt.day, calendar.monthrange(year, month)[1])
    recent_date = datetime.date(year, month, day).strftime('%Y%m%d')
    return recent_date

 


免責聲明!

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



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