一文帶你理清Python時間處理

一、Python基礎時間處理——time模塊

三種時間狀態:時間戳、時間元組、字符串
四個轉換函數:localtime、strftime、strptime、mktime

print("獲取當前時間戳:%s"%time.time())
print("獲取當前時間元組:",time.localtime())
print("獲取當前時間字符串:",time.strftime("%Y/%m/%d %H:%M:%S",time.localtime()))

在這裏插入圖片描述
在這裏插入圖片描述

import time
# 獲取當前時間戳,從1970年1月1日開始經歷過的秒數
print("獲取當前時間戳:%s"%time.time())
# 時間戳轉時間元組
print(time.localtime(time.time()-60*60*24))
print("獲取當前時間元組:",time.localtime())
p_tuple=time.localtime()
# 時間元組轉字符串format
print(time.strftime("%Y-%m-%d",p_tuple))
print(time.strftime("%Y/%m/%d %H:%M:%S",p_tuple))
# 字符串轉時間元祖parse
#time.strptime(string,format)
print(time.strptime("2019-6-18 12:05:34","%Y-%m-%d %H:%M:%S"))
# 時間元組轉時間戳
print(time.mktime(p_tuple))

二、pandas的datetime日期處理
1.日期格式化的三種方法:20200102 ===>"2020-01-02"

import pandas as pd
import numpy as np
import datetime,time
data=pd.read_excel("test.xlsx")
#方法一:字符串拼接
data['日期']=data['日期'].map(lambda x:str(x)[:4]+"-"+str(x)[4:6]+"-"+str(x)[6:])
#方法二:pandas的datetime處理
import datetime
data['日期']=pd.to_datetime(data['日期'])
# 方法三:python time包的基礎時間處理
import time
data['日期']=data['日期'].apply(lambda x:time.strftime("%Y-%m-%d",time.strptime(str(x),'%Y%m%d')))

在這裏插入圖片描述
2.pandas日期計算(pd.date_range、datetime.timedelta、relativedelta)

pandas 的date_range生成連續序列(按天、周、月)
pd.date_range(開始日期,結束日期,freq="D")#連續的日
pd.date_range(開始日期,結束日期,freq="W")#連續的週日
pd.date_range(開始日期,結束日期,freq="M")#連續的月底最後一天
----------------------------------------------------------------------------==datetime.timedelta日期按日加減==# 今天日期
today = datetime.date.today()
# 昨天時間
yesterday = (today - datetime.timedelta(days=1)).strftime('%Y-%m-%d')
#前天
for_yesterday=(today - datetime.timedelta(days=2)).strftime('%Y-%m-%d')
----------------------------------------------------------------------------==relativedelta日期按月加減==from dateutil.relativedelta import relativedelta
#去年 last year
# LY_date_xl=list(map(lambda x:str(x)[:10].replace("2020","2019"),date_xl))
LY_date_xl=list(map(lambda x:(x - relativedelta(months=12)).strftime('%Y-%m-%d'),date_xl))
#前年 The year before last
BL_date_xl=list(map(lambda x:(x - relativedelta(months=24)).strftime('%Y-%m-%d'),date_xl))
----------------------------------------------------------------------------
#Demo:
datetype={"day":"D","week":"W","month":'M'}
date_type=int(input("請選擇時間顆粒(日:0,周:1,月:2):"))
dateType=list(datetype.keys())[date_type]
end=pd.date_range(start_date,end_date,freq=datetype[dateType])
date_xl=pd.DataFrame(end)
date_xl.columns=['結束日期']
if dateType=="day":
    date_xl["開始日期"]=date_xl["結束日期"]
elif dateType=="week":
    date_xl["開始日期"]=date_xl["結束日期"].map(lambda x: (x- datetime.timedelta(days=6)).strftime('%Y-%m-%d'))
else:
    date_xl["開始日期"]=pd.to_datetime(date_xl["結束日期"].map(lambda x: str(x)[:8]+'01'))
date_xl=date_xl[["開始日期","結束日期"]].astype(str)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章