python有关时间的函数time和datatime

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

猜你喜欢

转载自blog.csdn.net/weixin_45755332/article/details/106725370