1 datetime模块
import datetime
1. 1 date类
1.1.1 创建日期对象
d = datetime.date(2019, 4, 13)
print(d) # 显示2019-4-13
1.1.2 获取当前日期
today_date = datetime.date.today()
today_year = today_date.year # 获取当前年份
today_month = today_date.month # 获取当前月份
today_day = today_date.day # 获取当前日
1.1.3 从时间戳获取日期
d = datetime.date.fromtimestamp(1576244364) # 特定日期到1970.1.1的秒数
1.2 time类
1.2.1 创建时间对象
t = datetime.time(hour=0, minute=0, second=0, microsecond=0)
t = datetime.time(11, 34, 56, 234566)
print(t) # 显示11:34:56.234566
print(t.hour) # 显示11
print(t.minute) # 显示34
print(t.second) # 显示56
print(t.microsecond) # 显示234566
1.3 datetime类
1.3.1 创建datetime对象
dt = datetime.datetime(year, month, day, hour, minute, second, microsecond)
参数year, month, day必需
dt = datetime.datetime(2019, 11, 28, 23, 55, 59, 342380)
print(dt) # 显示2019-11-28 23:55:59.342380
print(dt.year) # 显示2019
print(dt.month) # 显示11
print(dt.day) # 显示28
print(dt.hour) # 显示23
print(dt.minute) # 显示55
print(dt.second) # 显示59
print(dt.microsecond) # 显示342380
print(dt.timestamp()) # 显示时间戳(1970.1.1到特定日期的秒数)
还可以使用datetime对象的方法直接创建time对象
dt = datetime.datetime.now()
t = dt.time()
print(t)
1.3.2 时间戳和日期时间的相互转换
- 时间戳转换为日期时间
timestamp = 1545730073
dt = datetime.datetime.fromtimestamp(timestamp)
print(dt)
- 日期时间转换为时间戳
now = datetime.datetime.now()
timestamp = datetime.datetime.timestamp(now)
print(timestamp)
1.4 timedelta类
1.4.1 日期、时间的差值
t1 = datetime.datetime(2018, 7, 12, 7, 9, 33)
t2 = datetime.datetime(2019, 6, 10, 5, 55, 13)
t3 = t1 - t2 # t3是timedelta类的对象
print(t3)
print(f"Type of t3 is {type(t3)}")
这里注意到t3是负值,我们可以用求绝对值的方法将其符号转换为+
print(abs(t3))
1.4.2 持续时间
使用total_seconds()方法获得timedelta对象的总秒数
t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423)
print("total seconds =", t.total_seconds()) # 显示435633.233423
2 Python格式日期时间
2.1 strftime()
作用:将一个date、time、datetime对象转换为固定的格式,返回一个字符串
now = datetime.datetime.now()
now_str = now.strftime('%Y-%m-%d %H:%M:%S')
print(now_str)
2.1.1 time模块中也有此方法
import time
t = time.localtime()
t_str = time.strftime('%H:%M:%S', t)
print(t_str)
2.2 strptime()
作用:使用一个字符串创建一个datetime对象
date_str = '21 June, 2020'
date_object = datetime.datetime.strptime(date_str, '%d %B, %Y')
print(date_object)
'%B’用于月的全称(June、July等)
格式化代码清单如下:
3 time模块
3.1 time()
返回当前至1970-1-1 00:00:00的秒数
import time
seconds = time.time()
print(seconds)
3.2 ctime()
以至1970-1-1 00:00:00的秒数为参数,返回本地时间字符串
seconds = 1545925769.9618232
local_time = time.ctime(seconds)
print(local_time)
3.3 sleep()
给定的秒数内,暂停当前线程的执行
print("I'm handsome!")
interval = 5
time.sleep(interval)
print(f"After {interval} seconds, I'm still handsome!")
3.4 struct_time类
创建一个struct_time类的对象
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27,
tm_hour=6, tm_min=35, tm_sec=17,
tm_wday=3, tm_yday=361, tm_isdst=0)
参数如下:
其中,tm_isdst表示当前是否为夏令时,1表示是,0表示不是,-1表示不确定
3.5 localtime()
以至1970-1-1 00:00:00的秒数为参数,返回struct_time对象
local_time = time.localtime(1545925769)
print(local_time)
print(local_time.tm_year)
3.6 gmtime()
以至1970-1-1 00:00:00的秒数为参数,以UTC返回struct_time对象
3.7 mktime()
是localtime()的反函数,传入struct_time对象或其9个参数构成的元组
3.8 asctime()
传入struct_time对象或其9个参数构成的元组,返回表示struct_time对象的字符串
t = (2018, 12, 28, 8, 44, 4, 4, 362, 0)
t_str = time.asctime(t)
print(t_str)
3.9 strftime()
传入格式化字符串和struct_time对象,作用是将struct_time对象输出表示为格式化字符串形式
t = time.localtime()
t_str = time.strftime('%Y-%m-%d %H:%M:%S', t)
print(t_str)
3.10 strptime()
传入struct_time对象和格式化字符串,作用是将格式化字符串转换为struct_time对象
t_str = '21 July, 2020'
t = time.strptime(t_str, '%d %B, %Y')
print(t)