Python datetime 实现日期加减与格式化详解
本文详解 Python datetime 模块的日期处理功能,包括获取当前时间、格式化输出以及利用 timedelta 实现加一天、减一天、加减小时分钟等操作。同时介绍计算时间差的方法,并补充通过 toordinal 和 fromordinal 获取昨天、明天日期的替代方案,帮助开发者高效处理时间数据。
Python datetime 日期加减与格式化基础
在 Python 中,使用 datetime 模块可以轻松实现日期的增加或减少操作,例如加一天、减一天,或者调整小时和分钟数。
要获取当前的日期和时间,可以直接调用 datetime 模块中的相关方法。
import datetime
print datetime.datetime.now()
# 2018-05-08 16:53:30.101000
获取当前时间后,通常需要对时间格式进行转换,以便符合特定的展示或存储需求。
import datetime
print datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
# 2018-05-08 16:54
若需将当前日期增加一天,可以通过 datetime 模块结合 timedelta 类来实现。
import datetime
print (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%d %H:%M:%S")
# 2018-05-09 16:56:07
相反,若需将当前日期减少一天,同样利用 timedelta 类进行计算即可。
import datetime
print (datetime.datetime.now()+datetime.timedelta(days=-1)).strftime("%Y-%m-%d %H:%M:%S")
# 2018-05-07 16:56:59
除了 days 参数,timedelta 还支持 hours 和 minutes 参数,从而允许用户提前或延后指定的小时数或分钟数。
计算两个时间点之间的时间差,可以通过 datetime 对象相减得到,并提取天数、总秒数等详细信息。
import time
import datetime
start = datetime.datetime.now()
time.sleep(30)
end = datetime.datetime.now()
print (end-start).days # 0 天数
print (end-start).total_seconds() # 30.029522 精确秒数
print (end-start).seconds # 30 秒数
print (end-start).microseconds # 29522 毫秒数
获取昨天和明天日期的替代方法
除了使用 timedelta,Python 还提供了另一种获取昨天和明天日期的方法,虽然代码略显繁琐,但逻辑清晰。
首先,导入 datetime 模块并获取今天的日期对象。
import datetime
today = datetime.date.today()
接着,通过从今天的日期中减去一个 timedelta 对象(天数为 1),即可得到昨天的日期。
yesterday = today - datetime.timedelta(days=1)
同理,将今天的日期加上一个 timedelta 对象(天数为 1),即可得到明天的日期。
tomorrow = today + datetime.timedelta(days=1)
上述方法是大多数教程中推荐的常规做法,简单且直观。
此外,还有一种方法看似较为笨拙,但利用了 toordinal() 和 fromordinal() 函数,前者返回自公元元年 1 月 1 日以来的天数,后者则根据天数还原为日期对象。
yesterday = datetime.date.fromordinal(today.toordinal() - 1)
tomorrow = datetime.date.fromordinal(today.toordinal() + 1)
以上介绍了 Python datetime 模块在日期格式化及昨天、明天计算方面的多种实现方式,希望对读者有所帮助。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













