一文带你理清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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章