A. python中处理时间的几种方法小结
python中的时间模块主要有time, datetime。
I, time模块
time模块中包含了四种时间格式:
float格式,即给定时间相对于epoch增加的秒数
tuple格式,一个九元组 (tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)
string格式,'Mon Feb 6 15:00:06 2012'
format格式,以指定的格式生成的时间
针对这几种时间格式,time模块提供了函数在格式之间相互转换。
asctime(tuple) ->string
ctime(float) ->string
gmtime(float) ->tuple
localtime(float) ->tuple
mktime(tuple) ->float
strftime(format, tuple) ->format string
strptime(formatstring, format) ->tuple
time() -> float
上述函数中,除了time()函数直接返回当前时间相对于epoch的秒数外,其他函数都要求有时间的输入,如果没有输入,则默认使用当前时间。
另外,strftime和strptime中的format使用下面的格式:
%a 英文星期简写
%A 英文星期的完全
%b 英文月份的简写
%B 英文月份的完全
%c 显示本地日期时间
%d 日期,取1-31
%H 小时, 0-23
%I 小时, 0-12
%m 月, 01 -12
%M 分钟,1-59
%j 年中当天的天数
%w 显示今天是星期几
%W 第几周
%x 当天日期
%X 本地的当天时间
%y 年份 00-99间
%Y 年份的完整拼写
%S 秒(00-59)
除了上述的时间转换函数之外,模块还提供了下面的函数:
clock() 返回进程的创建时间,以秒计数的float
sleep(float) sleep一段时间,以秒计数
tzset() 更改时区
II, datetime
datetime模块定义了下面这几个类:
datetime.date:表示日期的类。常用的属性有year, month, day;datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;datetime.datetime:表示日期时间。datetime.timedelta:表示时间间隔,即两个时间点之间的长度。datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)
注 :上面这些类型的对象都是不可变(immutable)的。
下面详细介绍这些类的使用方式。
date类
date类表示一个日期。日期由年、月、日组成(地球人都知道~~)。date类的构造函数如下:
class datetime.date(year, month, day):参数的意义就不多作解释了,只是有几点要注意一下:
year的范围是[MINYEAR, MAXYEAR],即[1, 9999];month的范围是[1, 12]。(月份是从1开始的,不是从0开始的~_~);day的最大值根据给定的year, month参数来决定。例如闰年2月份有29天;
date类定义了一些常用的类方法与类属性,方便我们操作:
date.max、date.min:date对象所能表示的最大、最小日期;date.resolution:date对象表示日期的最小单位。这里是天。date.today():返回一个表示当前本地日期的date对象;date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;datetime.fromordinal(ordinal):将Gregorian日历时间转换为date对象;(Gregorian Calendar :一种日历表示方法,类似于我国的农历,西方国家使用比较多,此处不详细展开讨论。)
B. python如何对日期进行从小到大排序
其实直接sorted排序就行.如果要严谨的花, 改成用时间戳排序就是.
C. python date,datetime 和time的区别
1,date是日期,通派差常就是日历上的年月日,比较大一点的时间单位。
2,time通常就是厅纳指秒钟数,即从1970年1月1日至今进过的秒钟数。或者指一天中的时分秒,比较小一点的时间单位。就像你问别人What's
the
time,别人会告诉你几点几分,而不会告诉你年月日。
3,datetime就是年月日和时分秒,包含扮羡没以上两者。
datetime
模块是用来处理日期时间的,通常是用来进行计算日期,可以很方便的使用加减运算。而time模块主要是用来处理秒钟时间的,当然这个秒钟数也可以转化成日
期,获取当前日期通常就是从这个模块获取的。不过说time时,有时候表示的也会很宽泛,因为它的词义就是时间嘛,这个不用太计较的。不过date的意义
是确定无疑的。
D. python日期加减比较问题请教
#time模块实现,也是自带的
#字符串不好计算~但是时间戳是固定的呀...
#计算结果中,假定今带念天24日,输入24,输出0天,输入25,输出-1天
importtime
deff(tm):
stamp=time.mktime(time.strptime(tm,"%Y%m%d"))
diff=int((time.time()-stamp)//86400)
ifdiff<=180:
return{tm:str(diff)}
else:
d={}
whilediff>180:
d[tm]=180
stamp+=180*86400
diff=int((time.time()-stamp)//86400)
#注意这里time.gmtime()返回的是0时区日期,需要处理时区问题
tm=time.strftime("%Y%m%d",time.gmtime(stamp-time.timezone))
else:
饥咐蠢肢困d[tm]=str(diff)
returnd
if__name__=='__main__':
tm='20160325'
print(f(tm))
tm='20171015'
print(f(tm))
#结果输出,注意:字典是没有固定顺序的
'''
{'20160921':180,'20170320':180,'20170916':'38','20160325':180}
{'20171015':'9'}
'''
E. python3 环境,如何计算时间的比较和加减
显示5分钟前的时间
print(datetime.datetime.now()-datetime.timedelta(seconds=5*60))
构造时间并显示时间差
d=datetime.datetime.now()
d=d.replace(hour=9,minute=30,second=0)
print((datetime.datetime.now()-d))
F. 用python求每个行电话号码对应的时间最大值和最小值的差值
import datetime
import time
# 给你时间处理的方法,其它你自己应该能处理了吧。
# 将时间字符串转变成时间元组
t1 = time.strptime('2022/02/12 12:30','%Y/%m/%d %H:%M')
t2 = time.strptime('2022/02/12 12:24','%Y/%m/%d %H:%M')
# 将时间元组转换成日期类型
d1 = datetime.datetime(*t1[:6])
d2 = datetime.datetime(*t2[:6])
# 计算时间差
dm = d2-d1
# 两个时间相差的秒数,有正与负。什么意思不用说了吧。
se = dm.total_seconds()
print('总秒数:',se,'\n',se//60,'分',se%60,'秒')
G. python两个日期差了多少天
import datetime#首行输入,导入模块
date1=datetime.date(year,month,day)#这里面year,month,day是代表年,月,日,年必须写成2021这种格式,都必须写成数字
date2=datetime.date(year,month,day)#同上,这个是第二个日期(后面的),上面的是第一个日期(前面的)
delta=date2-date1#这是两个日期相减,是一个时间差对象
diffdays=delta.total_seconds()//86400#差的秒数除以86400即可
print(diffdays)#打印差的天数
H. python datetime处理时间
python时间处理方法datetime(),下面就举几个代码案例进行说明,代码如下:
#-*-coding:utf-8-*-
#运行环境:Python3.4
#datetime类
#datetime是date与time的结合体,包括date与time的所有信息。
#它的构造函数如下:
#datetime.datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])
#各参数的含义与date、time的构造函数中的一样,要注意参数值的范围。
#1.datetime类定义的类属性与方法:
#datetime.min、datetime.max:datetime所能表示的最小值与最大值;
#print:datetime.max:9999-12-3123:59:59.999999
#print:datetime.min:0001-01-0100:00:00
fromdatetimeimport*
importtime
print('datetime.max:'+str(datetime.max))
print('datetime.min:'+str(datetime.min))
#datetime.resolution:datetime最小单位;
#print:datetime.resolution:0:00:00.000001
print('datetime.resolution:'+str(datetime.resolution))
#datetime.today():返回一个表示当前本地时间的datetime对象;
#print:today():2012-09-1219:37:50.721000
print('today():'+str(datetime.today()))
#datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
#print:now():2012-09-1219:37:50.738000
print('now():'+str(datetime.now()))
#datetime.utcnow():返回一个当前utc时间的datetime对象;
#print:2012-09-1211:37:50.739000
print('utcnow():'+str(datetime.utcnow()))
#datetime.fromtimestamp(timestamp[,tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
#print:fromtimestamp(tmstmp):2012-09-1219:37:50.741000
print('fromtimestamp(tmstmp):'+str(datetime.fromtimestamp(time.time())))
#datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
#print:utcfromtimestamp(tmstmp):2012-09-1211:37:50.742000
print('utcfromtimestamp(tmstmp):'+str(datetime.utcfromtimestamp(time.time())))
#datetime.combine(date,time):根据date和time,创建一个datetime对象;
#print:datetime.combine(date,time):2012-09-1219:46:05
d=date(2012,9,12)
fromdatetimeimport*
t=time(19,46,5)
print('datetime.combine(date,time):'+str(datetime.combine(d,t)))
#datetime.strptime(date_string,format):将格式字符串转换为datetime对象;
#print:2007-03-0421:08:12
print(datetime.strptime("2007-03-0421:08:12","%Y-%m-%d%H:%M:%S"))
#2.datetime类提供的实例方法与属性
dt=datetime.strptime("2012-09-1221:08:12","%Y-%m-%d%H:%M:%S")
#print:2012912218120None
print(dt.year)
print(dt.month)
print(dt.day)
print(dt.hour)
print(dt.minute)
print(dt.second)
print(dt.microsecond)
print(dt.tzinfo)
print(dt.date())
print(dt.time())
print(dt.replace(year=2013))
print(dt.timetuple())
print(dt.utctimetuple())
print(dt.toordinal())
print(dt.weekday())
print(dt.isocalendar())
#printdt.isoformat([sep])
#datetime.ctime():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));
#3.格式字符串
#datetime.strftime(format)
#%a星期的简写。如星期三为Web
#%A星期的全写。如星期三为Wednesday
#%b月份的简写。如4月份为Apr
#%B月份的全写。如4月份为April
#%c:日期时间的字符串表示。(如:04/07/1010:43:39)
#%d:日在这个月中的天数(是这个月的第几天)
#%f:微秒(范围[0,999999])
#%H:小时(24小时制,[0,23])
#%I:小时(12小时制,[0,11])
#%j:日在年中的天数[001,366](是当年的第几天)
#%m:月份([01,12])
#%M:分钟([00,59])
#%p:AM或者PM
#%S:秒(范围为[00,61],为什么不是[00,59],参考python手册~_~)
#%U:周在当年的周数当年的第几周),星期天作为周的第一天
#%w:今天在这周的天数,范围为[0,6],6表示星期天
#%W:周在当年的周数(是当年的第几周),星期一作为周的第一天
#%x:日期字符串(如:04/07/10)
#%X:时间字符串(如:10:43:39)
#%y:2个数字表示的年份
#%Y:4个数字表示的年份
#%z:与utc时间的间隔(如果是本地时间,返回空字符串)
#%Z:时区名称(如果是本地时间,返回空字符串)
#%%:%%=>%
dt=datetime.now()
#print:(%Y-%m-%d%H:%M:%S%f):2012-09-1223:04:27145000
print('(%Y-%m-%d%H:%M:%S%f):'+str(dt.strftime('%Y-%m-%d%H:%M:%S%f')))
#print:(%Y-%m-%d%H:%M:%S%p):12-09-1211:04:27PM
print('(%Y-%m-%d%H:%M:%S%p):'+str(dt.strftime('%y-%m-%d%I:%M:%S%p')))
#print:%a:Wed
print('%%a:%s'%dt.strftime('%a'))
#print:%A:Wednesday
print('%%A:%s'%dt.strftime('%A'))
#print:%b:Sep
print('%%b:%s'%dt.strftime('%b'))
#print:%B:September
print('%%B:%s'%dt.strftime('%B'))
#print:日期时间%c:09/12/1223:04:27
print('日期时间%%c:%s'%dt.strftime('%c'))
#print:日期%x:09/12/12
print('日期%%x:%s'%dt.strftime('%x'))
#print:时间%X:23:04:27
print('时间%%X:%s'%dt.strftime('%X'))
#print:今天是这周的第3天
print('今天是这周的第%s天'%dt.strftime('%w'))
#print:今天是今年的第256天
print('今天是今年的第%s天'%dt.strftime('%j'))
#print:今周是今年的第37周
print('今周是今年的第%s周'%dt.strftime('%U'))
上面代码案例运行结果如下:
atetime.max:9999-12-3123:59:59.999999
datetime.min:0001-01-0100:00:00
datetime.resolution:0:00:00.000001
today():2014-05-0415:58:18.141186
now():2014-05-0415:58:18.193146
utcnow():2014-05-0407:58:18.243958
fromtimestamp(tmstmp):2014-05-0415:58:18.291558
utcfromtimestamp(tmstmp):2014-05-0407:58:18.342550
datetime.combine(date,time):2012-09-1219:46:05
2007-03-0421:08:12
2012
9
12
21
8
12
0
None
2012-09-12
21:08:12
2013-09-1221:08:12
time.struct_time(tm_year=2012,tm_mon=9,tm_mday=12,tm_hour=21,tm_min=8,tm_sec=12,tm_wday=2,tm_yday=256,tm_isdst=-1)
time.struct_time(tm_year=2012,tm_mon=9,tm_mday=12,tm_hour=21,tm_min=8,tm_sec=12,tm_wday=2,tm_yday=256,tm_isdst=0)
734758
2
(2012,37,3)
(%Y-%m-%d%H:%M:%S%f):2014-05-0415:58:19326295
(%Y-%m-%d%H:%M:%S%p):14-05-0403:58:19PM
%a:Sun
%A:Sunday
%b:May
%B:May
日期时间%c:SunMay415:58:192014
日期%x:05/04/14
时间%X:15:58:19
今天是这周的第0天
今天是今年的第124天
今周是今年的第18周
I. python 的时间怎么对比
在Python编程中,使用datetime模块计算两个时间的差:
1
2
3
4
5
6
7
8
>>> import datetime
>>> d1=datetime.datetime(2015,7,5)
>>> d2=datetime.datetime(2005,7,4)
>>>(d1-d2).seconds
//结果86400s
# 计算两个时间的间隔天数
# 注意:输入月份和天时,不能输入08,09等,会被识别为 8 进制而出错!(8进制是不超过07的)
# 解决办法:要把月份和天前面的0去掉。
J. python 计算时间差,时间加减运算代码
1、方便的计算两个时间的差,如两个时间相差几天,几小时:
2、python计算两个时间之间的秒数
3、时间相加
计算当前时间向后10天的时间。参数可以是days, hours,minutes,seconds,microseconds,如果是负数就是向前多少时间其本上常用的类: datetime和timedelta两个。它们之间可以相互加减。每个类都有一些方法和属性可以查看具体的值,如 datetime可以查看:天数(day),小时数(hour),星期几(weekday())等;timedelta可以查看:天数(days),秒数 (seconds)等