在处理数据和清洗数据时会遇到各种情况下的时间格式,有时会因处理时间格式花费较多的时间,这里对python最终较为常用的时间格式整理出来。
一、常用的日期时间模块
大部分情况下,我们使用的time、datetime,pandas三个包基本上就能完成绝大多数的时间格式问题。
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
1、time包的主要函数功能
time包中,可以使用如下
time.time()返回当前时间戳,
time.localtime()把时间戳转化成time中时间元祖,
time.mktime() 把时间元祖转化成时间戳
time.strftime()把时间元组转化成特定的日期格式。
time.strptime(string[, format]) 把字符串时间转化成时间元组
其他的函数:time.clock() 记录cpu运行的时间,可以记录代码块运行的时间,与time.time()的区别是tim.time()记录的最后一次和上次的时间间隔
import time
time.time() #输出当前时间戳,单位秒
time.localtime() #输出年月日时分秒
#但是输出时间元组time.struct_time(tm_year=2019, tm_mon=10, tm_mday=18, tm_hour=15, tm_min=2, tm_sec=8, tm_wday=4, tm_yday=291, tm_isdst=0)
time.ctime() #'Fri Oct 18 15:05:49 2019' 输出的是字符串格式
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) #输出指定格式的时间格式
time.strptime('2019/09/11','%Y/%m/%d') #输出时间元组
2、datetime 模块的主要函数
datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1.
datetime模块定义了5个类,分别是
• datetime.date:表示日期的类
• datetime.datetime:表示日期时间的类
• datetime.time:表示时间的类
• datetime.timedelta:表示时间间隔,即两个时间点的间隔
• datetime.tzinfo:时区的相关信息
datetime.date类
1).datetime.date.ctime(),返回格式如 Sun Apr 16 00:00:00 2017
2).datetime.date.fromtimestamp(timestamp),根据给定的时间戮,返回一个date对象;datetime.date.today()作用相同
3).datetime.date.isocalendar():返回格式如(year,month,day)的元组,(2017, 15, 6)
4).datetime.date.isoformat():返回格式如YYYY-MM-DD
5.datetime.date.isoweekday():返回给定日期的星期(0-6),星期一=0,星期日=6
6).datetime.date.replace(year,month,day):替换给定日期,但不改变原日期
7).datetime.date.strftime(format):把日期时间按照给定的format进行格式化。
8).datetime.date.timetuple():返回日期对应的time.struct_time对象
time.struct_time(tm_year=2017, tm_mon=4, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=105, tm_isdst=-1)
9).datetime.date.weekday():返回日期的星期
datetime.datetime类
datetime类有很多参数,datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]),返回年月日,时分秒
datetime.datetime.ctime()
datetime.datetime.now().date():返回当前日期时间的日期部分
datetime.datetime.now().time():返回当前日期时间的时间部分
datetime.datetime.fromtimestamp()
datetime.datetime.now():返回当前系统时间
datetime.datetime.replace()
datetime.datetime.strftime():由日期格式转化为字符串格式
datetime.datetime.now().strftime(’%b-%d-%Y %H:%M:%S’)
‘Apr-16-2017 21:01:35’datetime.datetime.strptime():由字符串格式转化为日期格式
datetime.datetime.strptime(‘Apr-16-2017 21:01:35’, ‘%b-%d-%Y %H:%M:%S’)
2017-04-16 21:01:35
datetime的timedelta类
datetime.datetime.timedelta用于计算两个日期之间的差值,例如:
a=datetime.datetime.now()#datetime.datetime(2019, 10, 18, 16, 4, 50, 639013)
b=datetime.datetime.now()
a-b. #datetime.timedelta(seconds=5, microseconds=970952)
time1 = datetime.datetime(2016, 10, 20)
time2 = datetime.datetime(2015, 11, 2)
“”“计算天数差值”""
print((time1-time2).days)
“”“计算两个日期之间相隔的秒数”""
print ((time1-time2).total_seconds())
3、pandas中常用的时间处理函数
date_range,datetime,to_datetime,to_timedelta函数
import pandas as pd
pd.datetime.now()
- pd.datetime引用的是datetime.datetime类,用法是相同的
- pd.date_range
pd.date_range('2019-09-11','2019-09-20')#输DatetimeIndex(['2019-09-11', '2019-09-12','2019-09-13', '2019-09-14','2019-09-15', '2019-09-16', '2019-09-17', '2019-09-18','2019-09-19', '2019-09-20'], dtype='datetime64[ns]', freq='D')
- to_datetime 可以把数据列由字符串转化成时间格式
pd.to_datetime('2019-09-11') #pd.to_datetime('2019-09-11')
- pd.to_timedelta()
pd.to_timedelta(np.arange(5), unit='M')
二、常用的时间格式
1、获取当前时间
time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
datetime.datetime.now().strftime('%b-%d-%Y %H:%M:%S')
2、时间运算
日期时间和天数运算
datetime.datetime.now()-datetime.timedelta(days=5)