datetime、time模块

  • time模块
  • 不同时间格式的表示方法
  • datetime模块


time模块

# 导入模块
import time


print('hello')
# 时间暂停/休眠方法,3秒
time.sleep(3)
print('world')

# 获取当前时间戳
# 时间戳,并非年月日形式
# 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数
print(time.time())

# 获取本地时间元组
print(time.localtime())
# 获取0时区时间元组,也就是格林尼治地区时间
print(time.gmtime())


# 将时间元组转为时间戳
print(time.mktime(time.localtime()))

# 将时间元组转为时间字符格式
print(time.asctime(time.localtime()))
print(time.asctime(time.gmtime()))

# 将时间戳转为时间字符格式
print(time.ctime(time.time()))

# 将时间元组转为指定的时间字符格式
stftime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
print(stftime)

# 将时间字符格式转为时间元组
stptime = time.strptime(stftime, '%Y-%m-%d %H:%M:%S')
print(stptime)

输出结果为:

hello
world
1664969581.7100704
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=5, tm_hour=19, tm_min=33, tm_sec=1, tm_wday=2, tm_yday=278, tm_isdst=0)
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=5, tm_hour=11, tm_min=33, tm_sec=1, tm_wday=2, tm_yday=278, tm_isdst=0)
1664969581.0
Wed Oct  5 19:33:01 2022
Wed Oct  5 11:33:01 2022
Wed Oct  5 19:33:01 2022
2022-10-05 19:33:01
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=5, tm_hour=19, tm_min=33, tm_sec=1, tm_wday=2, tm_yday=278, tm_isdst=-1)

其中hello到world的输出,会出现3秒的时间间隔,也就是time.sleep(3)的作用

不同时间格式的表示方法

# 时间格式的表示方法
# %a 本地(locale)简化星期名称
# %A 本地完整星期名称
# %b 本地简化月份名称
# %B 本地完整月份名称
# %c 本地相应的日期和时间表示
# %d 一个月中的第几天(01 - 31)
# %H 一天中的第几个小时(24小时制,00 - 23)
# %I 第几个小时(12小时制,01 - 12)
# %j 一年中的第几天(001 - 366)
# %m 月份(01 - 12)
# %M 分钟数(00 - 59)
# %p 本地am或者pm的相应符
# %S 秒(01 - 61)
# %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)
# 第一个星期天之前的所有天数都放在第0周。
# %w 一个星期中的第几天(0 - 6,0是星期天)
# %W 和%U基本相同,不同的是%W以星期一为一个星期的开始
# %x 本地相应日期
# %X 本地相应时间
# %y 去掉世纪的年份(00 - 99)
# %Y 完整的年份
# %Z 时区的名字(如果不存在为空字符)
# %% ‘%’字符

datetime模块

datetime模块可以看成是time模块的一个封装方法,很多方法与time模块的方法类似

import datetime

# 获取当前日期
print(datetime.datetime.now())

# 设置日期对象
date1=datetime.datetime(year=2022, month=4, day=6, hour=10, minute=36, second=50)
print(date1)

# 查看年月日信息
print(date1.year, date1.month, date1.day)

# 获取当前年月日
print(date1.date())

# 获取时分秒信息
print(date1.hour, date1.minute, date1.second)

# 转为字符串类型
print(type(date1.strftime('%Y-%m-%d %H:%M:%S')))
print(date1.strftime('%Y{}%m{}%d{} %H{}%M{}%S{}').format('年', '月', '日', '时', '分', '秒'))

# 将字符串类型转为时间类型
date2 = date1.strftime('%Y-%m-%d %H:%M:%S')
print(datetime.datetime.strptime(date2, '%Y-%m-%d %H:%M:%S'))
print(type(datetime.datetime.strptime(date2, '%Y-%m-%d %H:%M:%S')))

# 时间戳转为日期
print(datetime.datetime.fromtimestamp(123456789))

# 时间差:datetime.timedelta(year,month,day,hour,minute,second)
dt = datetime.timedelta(days=5, hours=3, seconds=30)
print(date1+dt)

结果为:

2022-10-05 19:41:09.772176
2022-04-06 10:36:50
2022 4 6
2022-04-06
10 36 50
<class 'str'>
2022年04月06日 10时36分50秒
2022-04-06 10:36:50
<class 'datetime.datetime'>
1973-11-30 05:33:09
2022-04-11 13:37:20

time模块和datetime模块其实差别不大,功能上差不多,但各有长处,选择适合的就好
在时间格式的表示方法上都差不多的