查看: 253|回复: 0

Python获取系统日期时间datetime与time格式化输出

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
Python 标准库中,输出当前计算机系统日期和时间的核心模块是 datetime 和 time。基础示例先用 datetime.now() 获取当前本地时间对象,再用 strftime() 的 %x 和 %X 输出本地日期与本地时间;如果需要固定格式、时间戳、UTC 时间或封装函数,可以按下面的方式组合。

一、datetime.now() 与 %x/%X 示例
  1. from datetime import datetime
  2. # 获取当前系统时间对象
  3. now = datetime.now()
  4. # 打印原始datetime对象
  5. print("原始now对象输出:", now)
  6. # %x 本地日期
  7. date_str = now.strftime("%x")
  8. print("本地日期:", date_str)
  9. # %X 本地时间
  10. time_str = now.strftime("%X")
  11. print("本地时间:", time_str)
复制代码
这段代码的输出会先显示原始 datetime 对象,再显示格式化后的本地日期和本地时间。%x 表示本地日期,%X 表示本地时间,它们会受系统区域设置影响;如果需要跨环境一致的格式,建议使用后面显式格式符,例如 %Y-%m-%d %H:%M:%S。

二、datetime 模块常用用法
1. 直接输出当前日期和时间
  1. from datetime import datetime
  2. now = datetime.now()
  3. print(now)
复制代码
输出示例:
2026-10-12 15:30:45.123456
包含年、月、日、时、分、秒、微秒。

2. 使用 strftime 格式化输出
  1. from datetime import datetime
  2. now = datetime.now()
  3. 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. 分别获取年月日等字段
  1. from datetime import datetime
  2. now = datetime.now()
  3. print("年:", now.year)
  4. print("月:", now.month)
  5. print("日:", now.day)
  6. print("时:", now.hour)
  7. print("分:", now.minute)
  8. print("秒:", now.second)
  9. print("微秒:", now.microsecond)
  10. print("星期:", now.weekday()) # 0=周一, 6=周日
复制代码
weekday() 返回 0 到 6,其中 0 表示周一,6 表示周日。

4. 获取 UTC 时间
  1. from datetime import datetime, timezone
  2. utc_now = datetime.now(timezone.utc)
  3. print(utc_now.strftime("%Y-%m-%d %H:%M:%S %Z"))
复制代码
datetime.now() 默认是本地时间;传入 timezone.utc 后获取的是 UTC 时间,再用 strftime() 格式化输出。

三、time 模块用法
1. 获取时间戳
  1. import time
  2. timestamp = time.time()
  3. print(timestamp)
复制代码
输出示例:
1728725445.123456
这是从 1970-01-01 00:00:00 UTC 到现在的秒数,适合做时间计算等底层处理。

2. 获取本地时间结构
  1. import time
  2. local_time = time.localtime()
  3. 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 格式化
  1. import time
  2. print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
复制代码

4. 直接输出可读字符串
  1. import time
  2. print(time.ctime())
复制代码
输出示例:
Mon Oct 12 15:30:45 2026

四、调用系统命令:不推荐,仅作了解
Windows 下可以调用:
  1. import os
  2. os.system("date /t")
  3. os.system("time /t")
复制代码
Linux / macOS 下可以调用:
  1. import os
  2. os.system("date")
复制代码
输出示例:
Mon Oct 12 15:30:45 CST 2026
这种方式依赖系统命令,跨平台性差,且输出格式不易控制,只适合快速查看。os 或 subprocess 也可用于调用系统命令,但相比 datetime 和 time,标准库方式更可控。

五、封装通用函数
  1. from datetime import datetime
  2. def get_system_datetime(fmt="%Y-%m-%d %H:%M:%S"):
  3.     """
  4.     获取当前系统日期和时间,并格式化输出。
  5.     :param fmt: 格式字符串,默认 "%Y-%m-%d %H:%M:%S"
  6.     :return: 格式化后的字符串
  7.     """
  8.     return datetime.now().strftime(fmt)
  9. # 使用示例
  10. print(get_system_datetime()) # 2026-10-12 15:30:45
  11. print(get_system_datetime("%Y年%m月%d日 %H:%M")) # 2026年10月12日 15:30
  12. 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 调用系统命令以及通用函数封装思路,可按实际场景替换格式字符串或选择对应模块。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-10-12 14:27 , Processed in 0.029349 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部