4-03python语法基础-内置模块-time和datetime模块

time模块

time模块是一个内置模块,非常的重要,非常的常用,

time模块的方法列表:
altzone
asctime
ctime
daylight
get_clock_info
gmtime
localtime,返回的是结构化时间,struct_time,有一个参数,秒时间戳,如果不输入,就是当前时间的结构化时间,
mktime,这个也很重要,是把结构化时间转为时间戳,只有一个参数,就是输入结构化时间,而且必填,
monotonic
monotonic_ns
perf_counter
perf_counter_ns
process_time
process_time_ns
sleep,这是睡眠,用的最多,
strftime,这是格式化时间,有两个参数,一个时间格式,一个是结构化时间,不输入第二个参数就是格式化当前时间,
strptime,这是把字符串转为结构化时间,需要两个参数一个字符串时间,一个字符串时间的格式,
struct_time
time(),返回的是当前时间戳,是一个浮点数类型,是秒
time_ns,这是纳秒
timezone
tzname
tzset

几个概念,

1,结构化时间,print(time.localtime()) # 结构化时间,这是格式化时间的基础,比如计算年和年的差,月和月的差,
2,格式化时间,print(time.strftime('%Y-%m-%d %H:%M:%S',p)) # 把结构化时间转化成格式化时间
3,时间戳时间,print(time.time())
时间戳要转成格式化,怎么转?要先转成结构化(localtime),然后通过结构化时间,转为格式化字符串,
格式化要转出时间戳,怎么转?也是格式化时间转为结构化时间,然后通过结构化时间,转为时间戳,
这个很重要,

他们之间的转换,

场景 操作
结构化时间-->时间戳 mktime 只要一步
时间戳------>结构化时间 localtime 只要一步
格式化时间-->结构化时间 strptime 只要一步
结构化时间-->格式化时间 strftime 只要一步
时间戳------>格式化时间 localtime strftime 需要两步
格式化时间-->时间戳 strptime mktime 需要两步

datetime模块

datatime模块重新封装了time模块,提供更多接口

datetime 模块提供了各种类用于操作日期和时间,该模块侧重于高效率的格式化输出

datetime 模块中定义的常用类:

datetime.date - 表示日期的类,常用属性:year, month, day
datetime.time - 表示时间的类,常用属性:hour, minute, second, microsecond, tzinfo
datetime.datetime - 表示日期和时间的类,常用属性: year, month, day, hour, minute, second, microsecond, tzinfo
datetime.timedelta - 表示时间间隔,即两个时间点(date,time,datetime)之间的长度

datatime也是内置模块,
这两个都要会使用,
我用使用场景来学习,

# datetime.datetime方法列表
astimezone
combine
ctime
date
day
dst
fold
fromisocalendar
fromisoformat
fromordinal
fromtimestamp
hour
isocalendar
isoformat
isoweekday
max
microsecond
min
minute
month
now,这是获取当前时间,是datetime.datetime格式,不是时间戳,
replace
resolution
second
strftime
strptime
time
timestamp
timetuple
timetz
today
toordinal
tzinfo
tzname
utcfromtimestamp
utcnow
utcoffset
utctimetuple
weekday
year

使用Python实现:把字符串转换成datetime类型

from datetime import datetime

string_date = "2023-04-01 14:30:00"
datetime_obj = datetime.strptime(string_date, '%Y-%m-%d %H:%M:%S')

print(datetime_obj)

场景,让程序停留几秒,

import time

time.sleep(3)

场景,当前时间格式化输出,实际就是时间转字符串

import time
print(time.strftime("%Y-%m-%d %H:%M:%S"))  # 2021-06-02 12:00:15

from datetime import datetime
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))  # 2021-06-02 12:00:15

场景,获取一个10位的时间戳

import time
print(int(time.time()))  # 因为不加int,会有小数点后面很多位,


from datetime import datetime
print(int(datetime.now())) # 不能用这个方法,因为time.time()是返回的float类型,
# datetime.now()是time.time()包装了一下,返回的是一个datetime,是不可以int的,

场景,把1500000000转成成格式化时间,

p = time.localtime(1500000000) # 先把时间戳时间转换成结构化时间,

print(p) # time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)

print(time.strftime('%Y-%m-%d %H:%M:%S',p)) # 把结构化时间转化成格式化时间

场景,# 把2019-12-18转化成时间戳时间

import time

p=time.strptime('2019-12-17', '%Y-%m-%d') # 先转成结构化时间,必须要这一步,不能直接格式化时间转换成时间戳时间,

print(p)

print(time.mktime(p)) # 然后转换成时间戳时间 55768267.03783512

场景,时间之间的加减,必须是时间戳之间的加减,

import time
t1 = time.time()
t2 = t1 + 10
print(t2)

posted @ 2021-09-22 10:46  技术改变命运Andy  阅读(74)  评论(0编辑  收藏  举报