我的知识记录

Python 获取当前时间日期并格式化:datetime 常用示例

Python 用 datetime 获取当前日期时间、时间戳、星期、昨天明天,strftime 格式化输出常用格式,附完整代码和速查表。

场景痛点

写脚本经常要在文件名后面拼时间戳,比如 报告_2026-09-14.xlsx,或者日志里打印当前时间,或者算"昨天"、"本周一"是哪天。每次都去搜 strftime 格式符,写完一个脚本就忘。把常用写法整理成一个函数库,需要时直接复制。

用到的库

# 标准库 datetime,不需要安装

完整代码

from datetime import datetime, timedelta
import time


def now_overview():
"""当前时间常用字段一览"""
now = datetime.now()
print("当前时间对象:", now)
print("年:", now.year)
print("月:", now.month)
print("日:", now.day)
print("小时:", now.hour)
print("分钟:", now.minute)
print("秒:", now.second)
print("星期(0=周一):", now.weekday())
print("一年中第几天:", now.timetuple().tm_yday)


def format_demo():
"""strftime 常用格式化"""
now = datetime.now()
print("YYYY-MM-DD:", now.strftime("%Y-%m-%d"))
print("YYYYMMDD 紧凑:", now.strftime("%Y%m%d"))
print("YYYY-MM-DD HH:MM:SS:", now.strftime("%Y-%m-%d %H:%M:%S"))
print("文件名安全格式:", now.strftime("%Y%m%d_%H%M%S"))
print("中文日期:", now.strftime("%Y年%m月%d日"))
print("12小时制 AM/PM:", now.strftime("%Y-%m-%d %I:%M %p"))


def calc_dates():
"""相对日期计算:昨天、明天、本周一、30天后"""
today = datetime.now().date()
print("今天:", today)
print("昨天:", today - timedelta(days=1))
print("明天:", today + timedelta(days=1))
print("7天后:", today + timedelta(days=7))
# weekday() 周一=0,本周一 = 今天 - 已过去的天数
this_monday = today - timedelta(days=today.weekday())
print("本周一:", this_monday)


def timestamp_demo():
"""时间戳和 datetime 互转"""
ts = time.time()
print("当前 Unix 时间戳(浮点):", ts)
print("时间戳转 datetime:", datetime.fromtimestamp(ts))
print("datetime 转时间戳:", datetime.now().timestamp())


def main():
now_overview()
print("-" * 40)
format_demo()
print("-" * 40)
calc_dates()
print("-" * 40)
timestamp_demo()


if __name__ == "__main__":
main()

代码讲解

  • datetime.now() 返回本地时区的当前时间对象,包含年月日时分秒微秒。
  • strftime 把时间对象格式化成字符串:%Y 四位年、%m 两位月、%d 两位日、%H 24小时制、%M 分、%S 秒。
  • timedelta(days=N) 做日期加减,算昨天明天一周后直接减加就行,不用自己处理大小月。
  • weekday() 周一返回 0、周日返回 6,所以本周一 = 今天 - weekday() 天。
  • time.time() 返回 Unix 时间戳(从 1970-01-01 秒数),适合做文件名唯一标识、日志排序。
  • 文件名用 %Y%m%d_%H%M%S 格式,没有空格和冒号,Windows/Mac 都合法。

运行结果

运行后依次打印当前时间各字段、五种格式化结果、相对日期、时间戳互转。把 format_demo 里的某一行复制到自己脚本里就能用,比如导出文件时文件名拼 f"报告_{datetime.now().strftime('%Y%m%d_%H%M%S')}.xlsx"

注意事项

  • %m 是两位月,%M 是分钟,大小写千万别搞反,错了就出怪结果。
  • %H 是 24 小时制,%I 是 12 小时制,做日志用 24 小时制。
  • 跨时区服务部署时,datetime.now() 用服务器本地时区,要统一时区用 datetime.now(timezone.utc)
  • 时间戳存数据库用整数秒(int(time.time())),别存浮点,精度够还省空间。
  • 解析字符串时间用 datetime.strptime("2026-09-14", "%Y-%m-%d"),和 strftime 反过来。

Python 获取当前时间日期并格式化:datetime 常用示例

标签:

更新时间:2026-09-14 20:38:33

上一篇:Python OCR 识别图片文字:pytesseract 中文识别教程

下一篇:Python 批量生成随机姓名手机号测试数据:导出 CSV