一文带你理清Python时间处理

举报
诡途 发表于 2021/11/19 01:10:18 2021/11/19
【摘要】 一、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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200