一文带你理清Python时间处理
【摘要】
一、Python基础时间处理——time模块
三种时间状态:时间戳、时间元组、字符串 四个转换函数:localtime、strftime、strptime、mktime
print("获取当前时间戳:...
一、Python基础时间处理——time模块
三种时间状态:时间戳、时间元组、字符串
四个转换函数:localtime、strftime、strptime、mktime
print("获取当前时间戳:%s"%time.time())
print("获取当前时间元组:",time.localtime())
print("获取当前时间字符串:",time.strftime("%Y/%m/%d %H:%M:%S",time.localtime()))
- 1
- 2
- 3
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))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
二、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')))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
文章来源: blog.csdn.net,作者:诡途,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_35866846/article/details/104847669
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)