Python 标准库中,输出当前计算机系统日期和时间的核心模块是 datetime 和 time。基础示例先用 datetime.now() 获取当前本地时间对象,再用 strftime() 的 %x 和 %X 输出本地日期与本地时间;如果需要固定格式、时间戳、UTC 时间或封装函数,可以按下面的方式组合。
一、datetime.now() 与 %x/%X 示例- from datetime import datetime
- # 获取当前系统时间对象
- now = datetime.now()
- # 打印原始datetime对象
- print("原始now对象输出:", now)
- # %x 本地日期
- date_str = now.strftime("%x")
- print("本地日期:", date_str)
- # %X 本地时间
- time_str = now.strftime("%X")
- print("本地时间:", time_str)
复制代码 这段代码的输出会先显示原始 datetime 对象,再显示格式化后的本地日期和本地时间。%x 表示本地日期,%X 表示本地时间,它们会受系统区域设置影响;如果需要跨环境一致的格式,建议使用后面显式格式符,例如 %Y-%m-%d %H:%M:%S。
二、datetime 模块常用用法
1. 直接输出当前日期和时间- from datetime import datetime
- now = datetime.now()
- print(now)
复制代码 输出示例:
2026-10-12 15:30:45.123456
包含年、月、日、时、分、秒、微秒。
2. 使用 strftime 格式化输出- from datetime import datetime
- now = datetime.now()
- print(now.strftime("%Y-%m-%d %H:%M:%S"))
复制代码 输出示例:
2026-10-12 15:30:45
常用格式符及示例:%Y 四位年份(2026);%m 月份(01-12,如10);%d 日期(01-31,如12);%H 小时(00-23,如15);%M 分钟(00-59,如30);%S 秒(00-59,如45);%f 微秒(000000-999999,如123456);%A 星期全称(Monday);%a 星期缩写(Mon);%B 月份全称(October);%p AM/PM(PM)。
3. 分别获取年月日等字段- from datetime import datetime
- now = datetime.now()
- print("年:", now.year)
- print("月:", now.month)
- print("日:", now.day)
- print("时:", now.hour)
- print("分:", now.minute)
- print("秒:", now.second)
- print("微秒:", now.microsecond)
- print("星期:", now.weekday()) # 0=周一, 6=周日
复制代码 weekday() 返回 0 到 6,其中 0 表示周一,6 表示周日。
4. 获取 UTC 时间- from datetime import datetime, timezone
- utc_now = datetime.now(timezone.utc)
- print(utc_now.strftime("%Y-%m-%d %H:%M:%S %Z"))
复制代码 datetime.now() 默认是本地时间;传入 timezone.utc 后获取的是 UTC 时间,再用 strftime() 格式化输出。
三、time 模块用法
1. 获取时间戳- import time
- timestamp = time.time()
- print(timestamp)
复制代码 输出示例:
1728725445.123456
这是从 1970-01-01 00:00:00 UTC 到现在的秒数,适合做时间计算等底层处理。
2. 获取本地时间结构- import time
- local_time = time.localtime()
- print(local_time)
复制代码 输出示例:
time.struct_time(tm_year=2026, tm_mon=10, tm_mday=12, tm_hour=15, tm_min=30, tm_sec=45, tm_wday=0, tm_yday=285, tm_isdst=0)
该结构包含年、月、日、时、分、秒、星期、一年中的第几天以及夏令时标记。
3. 使用 time.strftime 格式化- import time
- print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
复制代码
4. 直接输出可读字符串- import time
- print(time.ctime())
复制代码 输出示例:
Mon Oct 12 15:30:45 2026
四、调用系统命令:不推荐,仅作了解
Windows 下可以调用:- import os
- os.system("date /t")
- os.system("time /t")
复制代码 Linux / macOS 下可以调用:- import os
- os.system("date")
复制代码 输出示例:
Mon Oct 12 15:30:45 CST 2026
这种方式依赖系统命令,跨平台性差,且输出格式不易控制,只适合快速查看。os 或 subprocess 也可用于调用系统命令,但相比 datetime 和 time,标准库方式更可控。
五、封装通用函数- from datetime import datetime
- def get_system_datetime(fmt="%Y-%m-%d %H:%M:%S"):
- """
- 获取当前系统日期和时间,并格式化输出。
- :param fmt: 格式字符串,默认 "%Y-%m-%d %H:%M:%S"
- :return: 格式化后的字符串
- """
- return datetime.now().strftime(fmt)
- # 使用示例
- print(get_system_datetime()) # 2026-10-12 15:30:45
- print(get_system_datetime("%Y年%m月%d日 %H:%M")) # 2026年10月12日 15:30
- print(get_system_datetime("%A, %B %d, %Y")) # Monday, October 12, 2026
复制代码 这个函数的参数 fmt 是格式字符串,默认值为 "%Y-%m-%d %H:%M:%S",返回值是格式化后的字符串。调用方只需要传入不同的格式字符串,就能复用同一套系统时间获取逻辑。
六、选择建议与兼容性
如果只是输出当前系统日期和时间,优先使用 datetime.now() 配合 strftime(),代码短、跨平台、格式可控。需要时间戳或底层时间结构时使用 time.time()、time.localtime();需要 UTC 时间时使用 datetime.now(timezone.utc)。%x 和 %X 会跟随系统区域设置,结果可能因环境不同而变化;要生成日志或文件名时,更推荐显式写出 %Y、%m、%d、%H、%M、%S 等格式符。os.system() 调用系统命令只适合临时查看,不建议作为正式脚本方案。
以上示例覆盖了 datetime、time、os 调用系统命令以及通用函数封装思路,可按实际场景替换格式字符串或选择对应模块。 |