目录
一、获取时间
1、导入时间datetime模块
在Python中datetime模块在处理时间和日期方面提供了非常强大的功能,首先需要导入此模块。
import datetime 导入datetime模块
2、格式化时间
格式化常用函数:strptime、strftime
,两者区别:
strptime
: 将字符串解析为datetime
对象。strftime
: 将datetime
对象格式化为字符串。
3、示例
import datetime
#格式化获取当前时间
def get_current_time():
return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
if __name__ == '__main__':
print("当前的时间是:",get_current_time())
输出:
当前的时间是: 2025-03-09 11:10:11
解释:
1、datetime.datetime.now()
获取当前的日期和时间,精确到毫秒;
2、strftime
函数,格式化日期按照特定的格式显示,具体格式如下:
%Y
代表四位数的年份,%m
代表月份,%d
是日,%H
是小时(24小时制),%M
是分钟,%S
是秒。
二、计算时间
timedelta
是 Python 中 datetime
模块中的一个类,用于表示两个日期或时间之间的差值。它可以用于对日期和时间进行加减操作。timedelta
的主要参数包括 days
、seconds
、microseconds
、milliseconds
、minutes
、hours
和 weeks
,默认值均为 0。
1、创建 timedelta
对象
通过指定不同的参数来创建一个 timedelta
对象。例如:
days_1 =datetime.timedelta(days=1) # 改变时间间隔 1天
hour_1 =datetime.timedelta(hours=1) # 改变时间间隔 1小时
minute_1 =datetime.timedelta(minutes=1) # 改变时间间隔 1分钟
second_1 =datetime.timedelta(seconds=1) # 改变时间间隔 1秒
milli_1 =datetime.timedelta(milliseconds=1) # 改变时间间隔 1毫秒
micro_1 =datetime.timedelta(microseconds=1) # 改变时间间隔 1微秒
week_1 =datetime.timedelta(weeks=1) # 改变时间间隔 1周
all_1 =datetime.timedelta(days=1, hours=1, minutes=1, seconds=1, milliseconds=1, microseconds=1) # 改变时间间隔 1天1小时1分钟1秒1毫秒1微秒
2、日期加减
使用 timedelta
对 datetime
对象进行加减操作。例如:
now = datetime.datetime.now()
tomorrow = now + datetime.timedelta(days=1) # 明天的日期
yesterday = now - datetime.timedelta(days=1) # 昨天的日期
now + datetime.timedelta(hours=1) # 1小时后的日期
now + datetime.timedelta(minutes=1) # 1分钟后的日期
now + datetime.timedelta(seconds=1) # 1秒后的日期
print("当前的时间是:", now.strftime("%Y-%m-%d %H:%M:%S"))
print("明天的日期是:", tomorrow.strftime("%Y-%m-%d"))
print("昨天的日期是:", yesterday.strftime("%Y-%m-%d"))
print("1小时后的日期是:", addhour_1.strftime("%Y-%m-%d %H:%M:%S"))
print("1分钟后的日期是:", addminute_1.strftime("%Y-%m-%d %H:%M:%S"))
print("1秒后的日期是:", addsecond_1.strftime("%Y-%m-%d %H:%M:%S"))
输出结果:
当前的时间是: 2025-03-10 23:06:51
明天的日期是: 2025-03-11
昨天的日期是: 2025-03-09
1小时后的日期是: 2025-03-11 00:06:51
1分钟后的日期是: 2025-03-10 23:07:51
1秒后的日期是: 2025-03-10 23:06:52
3、计算日期差值
通过减法操作得到两个 datetime
对象之间的 timedelta
对象,然后访问其属性(如 days
、seconds
等)来获取具体的差值。例如:
start_time = datetime.datetime(2021, 1, 1)
end_time = datetime.datetime(2021, 1, 10)
delta = end_time - start_time
print('两个日期相差的天数:', delta.days) # # 两个日期相差的天数
print('两个日期相差的秒数:', delta.seconds) # # 两个日期相差的秒数
print('两个日期相差的毫秒数:', delta.microseconds) # # 两个日期相差的微秒数
输出结果:
两个日期相差的天数: 9
两个日期相差的秒数: 0
两个日期相差的毫秒数: 0
解释:
delta
的 days
属性表示两个日期之间的天数差异,而 seconds
和 microseconds
属性则表示在天数差异之外的时间差异。由于 start_time
和 end_time
的时间部分都是 00:00:00,因此 delta.seconds
和 delta.microseconds
都为 0。
若计算两个日期之间的时间差异(包括天数和时间),你需要确保 start_time
和 end_time
包含了具体的时间信息。例如:
start_time = datetime.datetime(2021, 1, 1, 12, 0, 0) # 设置为 2021年1月1日 12:00:00
end_time = datetime.datetime(2021, 1, 10, 14, 30, 15) # 设置为 2021年1月10日 14:30:15
delta = end_time - start_time
print('两个日期相差的天数:', delta.days)
print('两个日期相差的小时数:', delta.total_seconds() // 3600) # 两个日期相差的小时数
print('两个日期相差的分钟数:', delta.total_seconds() // 60) # 两个日期相差的分钟数
print('两个日期相差的秒数:', delta.total_seconds()) # 两个日期相差的秒数
print('两个日期中的小时数相差的数量:', delta.seconds // 3600) # 两个日期相差的小时数
print('两个日期中的分钟数相差的数量:', delta.seconds // 60) # 两个日期相差的分钟数
print('两个日期相差的秒数:', delta.seconds)
输出结果:
两个日期相差的天数: 9
两个日期相差的小时数: 218.0
两个日期相差的分钟数: 13110.0
两个日期相差的秒数: 786615.0
两个日期中的小时数相差的数量: 2
两个日期中的分钟数相差的数量: 150
两个日期相差的秒数: 9015
三、获取日期部分数据
date_only = now.date()
time_only = now.time()
years_only =now.year # 获取当前年份
month_only = now.month # 获取当前月份
day_only = now.day # 获取当前日期
hour_only = now.hour # 获取当前小时
minute_only = now.minute # 获取当前分钟
second_only = now.second # 获取当前秒
microsecond_only = now.microsecond # 获取当前微秒
weekday_only = now.weekday() # 获取今天星期几,0代表星期一,6代表星期日
weekday_only_iso = now.isoweekday() # 获取今天星期几,1代表星期一,7代表星期日
print("今天日期:", date_only)
print("当前时间:", time_only)
print("当前年份:", years_only)
print("当前月份:", month_only)
print("当前日期:", day_only)
print("当前小时:", hour_only)
print("当前分钟:", minute_only)
print("当前秒:", second_only)
print("当前微秒:", microsecond_only)
print("今天星期几:", weekday_only)
print("今天星期几(ISO):", weekday_only_iso)
输出:
今天日期: 2025-03-11
当前时间: 11:03:44.049305
当前年份: 2025
当前月份: 3
当前日期: 11
当前小时: 11
当前分钟: 3
当前秒: 44
当前微秒: 49305
今天星期几: 1
今天星期几(ISO): 2
说明:
datetime对象的.date()、
.time()方法
分别用来提取日期和时间的信息;
datetime对象的.year、
.month、.day等属性
分别用来提取年、月、日等部分时间信息;
四、时区处理
使用pytz
库来处理不同时区,方便处理不同时区的数据。
1、安装pytz库
pip install pytz
2、引用并使用
from datetime import datetime
import pytz
utc_now = datetime.now(pytz.utc) # 获取UTC时间
shanghai_tz = pytz.timezone('Asia/Shanghai') #指定时区
shanghai_time = utc_now.astimezone(shanghai_tz)
print("UTC的当前时间:", utc_now.strftime("%Y-%m-%d %H:%M:%S"))
print("上海的当前时间:", shanghai_time.strftime("%Y-%m-%d %H:%M:%S"))
输出结果:
UTC的当前时间: 2025-03-11 03:23:18
上海的当前时间: 2025-03-11 11:23:18
这篇博客到这里就接近尾声了,希望我的分享能给您带来一些启发和帮助,别忘了点赞、收藏。您的每一次互动、鼓励是我持续创作的动力!期待与您再次相遇,共同探索更广阔的世界!