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 当前时区的名称
%% %号本身
Time
计算机的系统时钟设置为特定的日期、时间和时区。内置的 time 模块让 Python程序能读取系统时钟的当前时间。
time.time()函数
Unix 纪元是编程中经常参考的时间: 1970 年 1 月 1 日 0 点,即协调世界时(UTC)。 time.time()函数返回自那一刻以来的秒数,是一个浮点值(回想一下,浮点值只是一个带小数点的数)。这个数字称为 UNIX 纪元时间戳。
import time
time.time()
1591974585.4908524
获取现在时间 time.localtime()
>>time.localtime()
time.struct_time(tm_year=2020, tm_mon=6, tm_mday=12, tm_hour=23, tm_min=11, tm_sec=53, tm_wday=4, tm_yday=164, tm_isdst=0)
时间格式转化 time.strftime()
>>import time
>>print(time.strftime('%y/%m/%d %H:%M:%S %A'))
20/06/12 23:14:58 Friday
>> time.strftime('%Y%m%d',time.localtime())
'20200612'
程序暂停 time.sleep()函数
如果需要让程序暂停一下,就调用 time.sleep()函数,并传入希望程序暂停的秒数。
time.sleep()函数将阻塞(也就是说,它不会返回或让程序执行其他代码),直到传递给 time.sleep()的秒数流逝。
>>print ("Start : %s" % time.ctime())
>>time.sleep( 5 )
>>print ("End : %s" % time.ctime())
#运行后可以看到,end比start慢了五秒打印
Start : Fri Jun 12 23:18:19 2020
End : Fri Jun 12 23:18:24 2020
datetime
获取当前时间
from datetime import datetime
now = datetime.now()
print(now)
2020-06-11 11:11:36.061618
格式转换
strftime()转换为str同样需要一个日期和时间的格式化字符串:
print(now.strftime('%a, %b %d %H:%M'))
时间加减
(now + timedelta(hours=10)).strftime('%a, %b %d %H:%M')
'Thu, Jun 11 21:18'
(now - timedelta(days=1)).strftime('%a, %b %d %H:%M')
'Wed, Jun 10 11:18'
(now + timedelta(days=2, hours=12)).strftime('%a, %b %d %H:%M')
'Sat, Jun 13 23:18'
datatime
from datetime import datetime
cday = datetime.strptime('2020-6-1 18:20:20', '%Y-%m-%d %H:%M:%S')
print(cday)
2020-06-01 18:20:20
timedelta
>>> from datetime import timedelta
>>> a = timedelta(days=2, hours=6)
>>> b = timedelta(hours=4.5)
>>> c = a + b
>>> c
datetime.timedelta(days=2, seconds=37800)
c.days
2
c.seconds
37800
c.seconds / 3600
10.5
c.total_seconds() / 3600
58.5
seconds 和 total_seconds
在python中经常会用到计算两个时间差,两个日期类型进行相减可以获取到时间差经常会使用seconds来获取,其实seconds获取的是时间差的秒数,遗漏了天seconds是获取时间部分的差值,而total_seconds()是获取两个时间之间的总差
import datetime
t1 = datetime.datetime.strptime("2016-08-24 10:30:00", "%Y-%m-%d %H:%M:%S")
t2 = datetime.datetime.strptime("2016-08-24 12:30:00", "%Y-%m-%d %H:%M:%S")
interval_time = (t2 - t1).seconds # 输入的结果:7200
total_interval_time = (t2 - t1).total_seconds() # 输出结果也是: 7200
# 换一个方式
t1 = datetime.datetime.strptime("2016-08-24 10:30:00", "%Y-%m-%d %H:%M:%S")
t2 = datetime.datetime.strptime("2016-08-27 12:30:00", "%Y-%m-%d %H:%M:%S")
interval_time = (t2 - t1).seconds # 输入的结果:7200
total_interval_time = (t2 - t1).total_seconds() # 输出结果也是: 266400