1. 介绍
时间是我们生活中无法避免的问题,同样在编程中也需要对时间进行操作。Python中的time和datetime模块就提供了关于时间相关的常用操作。
1.1 time模块
time模块是Python中处理时间的基本模块。该模块下有很多用于处理时间的函数和类。其中最常用的函数包括:
time():返回当前时间的时间戳,时间戳是指当前时间距离1970年1月1日零时零分零秒的秒数。
sleep():线程推迟指定的时间运行,在指定的时间之后线程才会运行。
gmtime():将一个时间戳转换为UTC时区(世界标准时间,与中国相差8小时)的struct_time对象。
localtime():将时间戳转换为当前时区的struct_time对象。
import time
# 返回当前时间时间戳
print(time.time())
# 推迟2秒运行
time.sleep(2)
# 将时间戳转换为UTC时区的struct_time对象
utc_time = time.gmtime(1612115878)
print(utc_time)
# 将时间戳转换为当前时区的struct_time对象
local_time = time.localtime(1612115878)
print(local_time)
1.2 datetime模块
datetime模块是Python中处理时间的高级模块,它是在time模块的基础上进行的封装。该模块下有很多用于处理时间的类和函数。其中最常用的类包括:
datetime:表示日期和时间。
date:表示日期。
time:表示时间。
timedelta:表示时间间隔。
import datetime
# 获取当前日期和时间
now = datetime.datetime.now()
print(now)
# 获取日期
today = datetime.date.today()
print(today)
# 获取时间
cur_time = datetime.datetime.now().time()
print(cur_time)
# 计算时间间隔
delta_time = datetime.timedelta(days=1)
print(delta_time)
2. 时间戳与日期时间相互转换
2.1 时间戳转日期时间
时间戳是指当前时间距离1970年1月1日零时零分零秒的秒数,将时间戳转换为日期时间可以使用time模块的gmtime()、localtime()函数,也可以使用datetime模块的fromtimestamp()函数。
import time, datetime
# 将时间戳转换为UTC时区的日期时间
timestamp = 1612690078
utc_date_time = time.gmtime(timestamp)
print(utc_date_time)
# 将时间戳转换为当前时区的日期时间
local_date_time = time.localtime(timestamp)
print(local_date_time)
# 将时间戳转换为日期时间
date_time = datetime.datetime.fromtimestamp(timestamp)
print(date_time)
2.2 日期时间转时间戳
将日期时间转换为时间戳可以使用time模块的mktime()函数,也可以使用datetime模块的timestamp()函数。
import time, datetime
# 将UTC时区的日期时间转换为时间戳
utc_date_time = (2021, 2, 7, 8, 7, 58, 6, 38, 0)
utc_timestamp = time.mktime(utc_date_time)
print(utc_timestamp)
# 将当前时区的日期时间转换为时间戳
local_date_time = datetime.datetime.now()
local_timestamp = time.mktime(local_date_time.timetuple())
print(local_timestamp)
# 将日期时间转换为时间戳
date_time = datetime.datetime(2021, 2, 7, 16, 7, 58)
timestamp = date_time.timestamp()
print(timestamp)
3. 格式化日期时间
对于获取的日期时间和时间戳,我们常常需要将其按照指定格式进行格式化输出。在Python中可以使用time模块的strftime()函数和datetime模块的strftime()函数来实现。
3.1 time模块格式化
time模块的strftime()函数可以将struct_time对象转换为字符串。
import time
# 获取当前的时间
cur_time = time.localtime()
# 将时间按照指定格式进行格式化
str_time = time.strftime('%Y-%m-%d %H:%M:%S', cur_time)
print(str_time)
3.2 datetime模块格式化
datetime模块的strftime()函数可以将datetime对象或者date对象转换为字符串。
import datetime
# 获取当前的时间
cur_time = datetime.datetime.now()
# 将时间按照指定格式进行格式化
str_time = cur_time.strftime('%Y-%m-%d %H:%M:%S')
print(str_time)
# 获取当前的日期
cur_date = datetime.date.today()
# 将日期按照指定格式进行格式化
str_date = cur_date.strftime('%Y-%m-%d')
print(str_date)
4. 时间运算
在Python中,可以使用datetime模块进行日期和时间的运算,例如加减运算。
import datetime
# 获取当前时间
now = datetime.datetime.now()
# 当前时间加上10天
after_10_days = now + datetime.timedelta(days=10)
# 当前时间减去1小时
before_1_hour = now - datetime.timedelta(hours=1)
# 计算时间差
delta_time = now - before_1_hour
print(after_10_days)
print(before_1_hour)
print(delta_time)
5. 总结
Python中的time和datetime模块提供了丰富的关于时间的操作,可以轻松地对时间进行处理。在实际开发中,我们需要根据不同的需求来选择不同的操作方法,以达到最优的效果。