一、日期时间
1.1 通过time模块获取当前日期
import time
# 打印当前时间方式1
t = time.localtime()
current_time = time.strftime("%Y-%m-%d %H:%M:%S",t)
print(current_time)
# 打印当前时间方式2
current_time = time.strftime('%Y-%m-%d %H:%M:%S')
print(current_time)
1.2 通过datetime模块获取当前时间
from datetime import datetime
dt = datetime.now()
dt_str = dt.strftime('%Y-%m-%d %H:%M:%S')
print(dt_str)
二、日期时间的格式化(strf = strformat)和解析(strp = strparse)
以上内容已经介绍了日期时间的格式化,这里只做日期时间字符串的解析!
# 使用time模块解析
import time
time_jiexi = time.strptime("30 Nov 00","%d %b %y")
print(time_jiexi)
#输出结果
time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
# 使用datetime模块解析
from datetime import datetime
datetime_jiexi = datetime.strptime("2020-06-13 19:03:20","%Y-%m-%d %H:%M:%S")
print(datetime_jiexi)
三、日期时间计算
# 引入datetime模块中的timedelta对象,用来操纵datetime时间
from datetime import datetime,timedelta
ten_hours_from_now = datetime.now() + timedelta(hours=9)
print(ten_hours_from_now)
# 算数运算,计算时间的长短
from datetime import datetime
time1 = datetime(1985, 9, 10, 0, 10)
time2 = datetime(1986, 9, 10, 0, 10)
print(time1 - time2)
四、时间转epoch时间戳(timestamp)
Epoch时间,即时间戳(timestamp),也称为Unix时间和POSIX时间,是用自世界标准时间(1970-1-1 00:00:00的秒数值)
#时间对象转epoch时间
#time模块实现
import time
now = int(time.time())
print(now)
#datetime模块实现
from datetime import datetime
print(datetime(2022, 5, 20, 23, 0).timestamp())
五、关于时区timezone,以及UTC等
日期时间对象,分为两类。一类是"感知型",另一类是"简单型",简单说判断日期时间对象是否为"感知型"还是"简单型",看日期时间对象是否有tzinfo对象!
"感知型":就是在对象里面包含时区信息,对于一个给定的日期时间,无论在哪个时区转换成UTC都是同一个时间
"简单型":就是在对象里面不包括时区信息,对于一个时间处于哪个时区,完全靠开发者自己来确定!
# # 判断是否为简单型还是感知型,是否有tzinfo对象
# from datetime import datetime
#
# print(datetime.now().tzinfo)
# 要使得datetime对象变成"感知型",可以引入pytz库
# 首先实例化一个timezone对象,然后使用timezone对象将datetime对象localize(本地化)
# localize(本地化)只是给出对象的时区信息
import datetime
import pytz
now = datetime.datetime.now()
timezone = pytz.timezone("Asia/Shanghai")
now_aware = timezone.localize(now)
print(now_aware.tzinfo)
print(now_aware)
#获取pytz模块支持的所有时区
# print(pytz.all_timezones)
#转换成其它时区
timezone2 = pytz.timezone("US/Pacific")
now = datetime.datetime.now()
now_aware = timezone2.localize(now)
print(now_aware.tzinfo)
print(now_aware)
#以上两个时区的代码输出结果
Asia/Shanghai
2022-05-20 23:51:48.438035+08:00
US/Pacific
2022-05-20 23:51:48.558968-07:00