当前位置: 首页 > news >正文

时间戳的学习,参照案例学习,一目了然

python import time from datetime import datetime # ====== 获取时间戳 ====== # time.time() 返回浮点数秒数(如 1718242573.123456) # int() 转换为整数秒级时间戳 timestamp = int(time.time()) print(f"当前时间戳: {timestamp}") # 1718242573 # ====== 格式化输出 ====== # strftime() 将datetime对象格式化为字符串 # %Y:4位年份 %m:月份 %d:日期 %H:24小时 %M:分钟 %S:秒 dt = datetime.fromtimestamp(timestamp) log_time = dt.strftime("%Y-%m-%d %H:%M:%S") print(f"可读时间: {log_time}") # 2024-06-12 18:36:13 # ====== 日志示例 ====== log_message = f"[{log_time}] [INFO] 用户登录成功, 用户ID: 1001" print(log_message) # [2024-06-12 18:36:13] [INFO] 用户登录成功, 用户ID: 1001

技术细节

  • time.time()返回UTC时间戳(从1970年1月1日UTC零点开始)
  • datetime.fromtimestamp()默认转成本地时区时间
  • 日志中常用UTC时间戳避免时区混乱

场景2:数据库存储

python import time from datetime import datetime, timezone # ====== 存储为时间戳 ====== # 用时间戳存储,数据库可以按数值排序(时间先后) user_action = { "user_id": 1001, "action": "login", "timestamp": int(time.time()) # 存储为整数 } print(f"存储数据: {user_action}") # ====== 查询时转换 ====== # 从时间戳还原为可读时间 retrieved_time = user_action["timestamp"] dt_utc = datetime.fromtimestamp(retrieved_time, tz=timezone.utc) dt_local = datetime.fromtimestamp(retrieved_time) # 本地时区 print(f"UTC时间: {dt_utc.strftime('%Y-%m-%d %H:%M:%S')}") print(f"本地时间: {dt_local.strftime('%Y-%m-%d %H:%M:%S')}")

技术细节

  • 时间戳是整数,占用空间小,查询快
  • 排序时直接按数值比较(大数=时间晚)
  • UTC时间戳不依赖时区,避免数据歧义

场景3:API交互(JSON数据)

python import time import json from datetime import datetime # ====== 发送数据 ====== # JSON序列化时,datetime对象不能直接转换 # 需要转成ISO格式或时间戳 api_data = { "event": "button_click", "timestamp": datetime.utcnow().isoformat() + "Z" # ISO 8601格式 } print(f"发送数据: {json.dumps(api_data)}") # ====== 接收数据 ====== # 接收时解析ISO格式 received = {"event": "login", "timestamp": "2024-06-12T10:36:13Z"} # 解析ISO格式 dt_received = datetime.fromisoformat(received["timestamp"].replace("Z", "+00:00")) print(f"解析时间: {dt_received}")

技术细节

  • ISO 8601格式是国际标准,人类和机器都可读
  • "Z"表示UTC时间(Zulu time)
  • JSON不支持datetime对象,必须转字符串

练手代码(试试看)

python # 练习1:生成10秒内的时间戳列表 import time timestamps = [] for i in range(10): timestamps.append(int(time.time())) time.sleep(1) # 等待1秒 print("10秒内的时间戳:", timestamps) # 练习2:计算两个时间戳的差值 t1 = int(time.time()) time.sleep(2) # 模拟等待2秒 t2 = int(time.time()) difference = t2 - t1 print(f"时间差: {difference}秒") # 练习3:格式化当前时间为多种格式 dt = datetime.now() formats = { "标准格式": dt.strftime("%Y-%m-%d %H:%M:%S"), "中文格式": dt.strftime("%Y年%m月%d日 %H时%M分%S秒"), "文件名": dt.strftime("%Y%m%d_%H%M%S") } for name, value in formats.items(): print(f"{name}: {value}")

运行预期

  • 练习1:生成10个递增的时间戳
  • 练习2:输出"2秒"左右
  • 练习3:显示三种不同格式的当前时间

建议学习路径

  1. 先运行上述代码观察输出
  2. 修改时间格式字符串,观察变化
  3. 尝试将时间戳转回可读时间
  4. 思考:为什么日志系统用时间戳而不是字符串?
http://www.gsyq.cn/news/1514464.html

相关文章:

  • Git冲突实战:模拟多人协作修改同一行代码,并教你用Beyond Compare做三方合并
  • Python 高手编程系列八十四:测试环境与依赖兼容性
  • 从引脚到PCB:用UC3843设计一个12V/2A开关电源的保姆级实战教程
  • 2026年当下,重庆家长如何联系正规的中考体育培训机构? - 品牌鉴赏官2026
  • 说到常州ECO棉床垫,我踩过的坑你们别踩 - 深圳市民HLL
  • 保姆级教程:用TransCAD 6.0搞定公交线路动态分段与站点定位(附实验数据)
  • 保姆级教程:用Deeplabcut从零标注小鼠行为视频(附完整配置文件修改指南)
  • LLM驱动的人力资源能力建模技术演进与实践
  • 百度网盘提取码智能获取:如何用3秒解决传统搜索的5分钟难题?
  • 2026年青岛发电机出租公司哪家可靠?实测6家服务商表现,附避坑指南 - 优质品牌商家
  • 用FreeRTOS和裸机代码两种方式理解STM32平衡小车PID控制逻辑
  • 2026年高杆桂花苗木基地评价解析:从品种到工程应用的多维观察 - 优质品牌商家
  • 从‘为什么拒贷我’到‘AI医生怎么看片’:可解释性AI(XAI)如何重塑我们与算法的信任关系
  • 电赛备赛笔记:用STM32驱动AD9959信号发生器模块,从接线到出波保姆级教程
  • 自适应系统中的运行时伦理挑战与解决方案
  • 2026年近期,选择诚信的平板除雾器品牌为何成为企业的关键决策? - 品牌鉴赏官2026
  • shell作业
  • 保姆级教程:从零集成华为ScanKit到你的Android项目(含权限、依赖、回调全流程)
  • Win11 专属部署教程,OpenClaw 智能体稳定运行方案【包含安装包】
  • Plain Craft Launcher 2:快速上手指南与完整功能解析
  • 那一刻,智能锡膏管理改变了工厂的命运
  • 别再死记硬背公式了!用Cadence DC仿真,手把手教你搞定180nm工艺下gm/Id的精确设计
  • 西安陕西 央国企事业单位银行券商互联网企业招聘信息整合
  • 保姆级教程:用STM32CubeMX和HAL库驱动MPU6050,实现姿态解算(附DMP库移植避坑指南)
  • 航司采购需求解析LLM调优:基于2026年大模型后训练范式的深度实践
  • 【新手零配置运行】 OpenClaw,桌面智能助手搭建全过程(含安装包)
  • 2026年|降AI率收藏!学长实测10款AI智能降重工具红黑榜:论文降AI避坑(含免费降低AI率办法)
  • 草本头疗到底怎么样?一人一方针对护理
  • 基于主题建模的心理量表简化方法研究
  • 前端焦点管理与键盘导航:从 Tab 顺序到无障碍交互的工程实践