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

如何在 date 命令中使用时间戳?

date命令中,时间戳(Unix Epoch Time,即从 1970-01-01 00:00:00 UTC 到指定时间的秒数)是核心实用功能,支持时间戳转可读时间当前时间转时间戳自定义格式转换等场景,以下是完整用法:

一、核心概念

  • 时间戳单位:默认是(毫秒 / 微秒需额外拼接纳秒字段);
  • 格式符%s:用于输出时间戳(秒);
  • 选项-d @<时间戳>:用于将时间戳转回可读时间(@是固定分隔符,不可省略)。

二、常用时间戳操作示例

1. 【基础】当前时间转时间戳(秒)

直接用%s格式符,输出当前系统时间对应的 Unix 时间戳(秒):

bash

运行

# 最简写法 date +%s # 示例输出:1733498125(对应 2025-12-06 11:15:25) # 带纳秒的高精度时间戳(秒.纳秒) date +"%s.%N" # 示例输出:1733498125.123456789
2. 【核心】时间戳转回可读时间

-d @<时间戳>解析时间戳,输出系统默认格式的可读时间:

bash

运行

# 示例:解析时间戳 1733498125 date -d @1733498125 # 示例输出:Sat Dec 6 11:15:25 CST 2025 # 解析高精度时间戳(自动忽略小数部分,仅取秒数) date -d @1733498125.123456789 # 输出同上(仅解析 1733498125 秒部分)
3. 【实用】时间戳转自定义格式

结合-d @<时间戳>和格式符,按需求输出指定格式的时间(日志 / 脚本常用):

bash

运行

# 转「年-月-日 时:分:秒」格式 date -d @1733498125 +"%Y-%m-%d %H:%M:%S" # 输出:2025-12-06 11:15:25 # 转「年月日时分秒」紧凑格式(用于文件名) date -d @1733498125 +"%Y%m%d_%H%M%S" # 输出:20251206_111525 # 转带星期/时区的格式 date -d @1733498125 +"%Y-%m-%d %A %H:%M:%S %Z" # 输出:2025-12-06 Saturday 11:15:25 CST
4. 【进阶】UTC 时区的时间戳转换

默认转换用系统时区(如 CST 中国标准时间),加-u可强制用 UTC 时区解析:

bash

运行

# 时间戳转 UTC 时间(而非本地时区) date -u -d @1733498125 +"%Y-%m-%d %H:%M:%S" # 输出:2025-12-06 03:15:25(UTC 比 CST 晚 8 小时) # 当前 UTC 时间转时间戳 date -u +%s # 输出与本地时区 `date +%s` 一致(时间戳是 UTC 统一值,与时区无关)
5. 【脚本场景】计算两个时间戳的差值

通过时间戳可快速计算时间差(秒 / 分钟 / 小时 / 天),示例:

bash

运行

# 步骤1:定义两个时间戳(示例:2025-12-01 和 2025-12-06) start_ts=$(date -d "2025-12-01" +%s) # 1732982400 end_ts=$(date -d "2025-12-06" +%s) # 1733498125 # 步骤2:计算差值(秒) diff_seconds=$(( end_ts - start_ts )) # 步骤3:转换为天/小时/分钟 diff_days=$(( diff_seconds / 86400 )) # 86400秒=1天 diff_hours=$(( diff_seconds % 86400 / 3600 )) # 剩余秒数转小时 diff_minutes=$(( diff_seconds % 3600 / 60 )) # 剩余秒数转分钟 # 输出结果 echo "时间差:$diff_days 天 $diff_hours 小时 $diff_minutes 分钟" # 输出:时间差:5 天 11 小时 15 分钟
6. 【扩展】指定日期转时间戳

通过-d解析任意可读日期,再转时间戳(反向转换):

bash

运行

# 指定日期转时间戳 date -d "2025-12-25 00:00:00" +%s # 输出:1735027200 # 支持自然语言日期转时间戳 date -d "yesterday" +%s # 昨天当前时间的时间戳 date -d "1 hour ago" +%s # 1小时前的时间戳 date -d "next Monday" +%s # 下周一当前时间的时间戳

三、注意事项

  1. 时间戳单位date仅支持秒级时间戳解析(-d @<秒数>),若输入毫秒级时间戳(如 1733498125123),需先截取前 10 位(秒数):

    bash

    运行

    # 处理毫秒时间戳(1733498125123 → 1733498125) ms_ts=1733498125123 s_ts=${ms_ts:0:10} # 截取前10位 date -d @$s_ts +"%Y-%m-%d %H:%M:%S"
  2. 时区无关性:时间戳本身是 UTC 统一值,转换时的时区仅影响 “可读时间的显示”,不改变时间戳数值;
  3. 非法时间戳:若输入超出范围的时间戳(如负数、过大值),date会报错date: invalid date '@-1'
  4. 闰秒处理:时间戳会跳过闰秒(如 60 秒),无需额外处理。

四、常用时间戳转换总结表

需求命令示例示例输出
当前时间转秒级时间戳date +%s1733498125
当前时间转高精度时间戳date +"%s.%N"1733498125.123456789
时间戳转本地时区可读时间date -d @1733498125Sat Dec 6 11:15:25 CST 2025
时间戳转自定义格式date -d @1733498125 +"%Y-%m-%d %H:%M:%S"2025-12-06 11:15:25
时间戳转 UTC 时间date -u -d @1733498125 +"%Y-%m-%d %H:%M:%S"2025-12-06 03:15:25
指定日期转时间戳date -d "2025-12-25" +%s1735027200
http://www.cnnetsun.cn/news/2513038.html

相关文章:

  • Windows平台ADB驱动终极安装指南:3分钟快速搭建Android开发环境
  • AICoverGen:3分钟让任何AI声音唱出你的歌曲![特殊字符]
  • Go语言工具链集成:IDE与编辑器
  • 【DeepSeek部署实战指南】:百度智能云零基础30分钟完成模型API上线(含避坑清单)
  • 抖音内容高效获取:开源下载工具如何解决创作者素材收集难题
  • OpencvSharp 算子学习教案之 - Cv2.SetWindowProperty
  • 安徽话语音合成从0到商用,11步完成ElevenLabs API对接、情感注入与皖北/皖南口音校准
  • 彻底卸载微软Edge浏览器:EdgeRemover工具完全指南
  • 汇编 内联汇编与混合编程 (逆向分析)
  • 6.1 网络故障排查基础:连通性测试与抓包分析
  • 4.8.3 利用SparkSQL统计每日新增用户
  • 如何用3步将B站缓存视频变回可播放的MP4文件?
  • 短视频文案为什么总能让你心甘情愿停下来?
  • 抖音内容批量下载解决方案:告别手动保存的智能工具指南
  • 小白入门AI|跟着吴恩达学AI for Everyone,用Prompt轻松撸出一个生日贺卡应用✨
  • 博德之门3模组管理器终极指南:5分钟快速上手解决模组冲突
  • 在taotoken模型广场中根据任务与预算选择合适模型的实践
  • 彻底搞懂ARP协议:从底层原理到安全攻防,万字长文带你吃透局域网通信的“隐形桥梁”
  • 3步快速搞定抖音资源批量下载:免费高效的开源工具完整指南
  • Cursor Free VIP深度解析:如何永久突破AI编程助手试用限制的完整指南
  • SMAPI模组加载器:终极星露谷物语模组管理完全指南
  • 当 AI 开始互相分工:真正的问题才刚刚开始
  • RK3588开发板Ubuntu系统实战攻略:从零构建高性能嵌入式平台
  • 如何通过 curl 命令直接测试 Taotoken 的聊天补全接口与模型响应
  • 3个步骤解锁NVIDIA显卡隐藏性能:免费工具终极指南
  • 专业级开源字体解决方案:Adobe Source Sans 3技术深度解析
  • 网盘直链解析工具完整指南:如何实现九大平台免登录高速下载
  • 54种字体样式革新设计:Barlow如何成为现代排版的瑞士军刀
  • 原来选床垫也有这么多讲究?
  • ARMv8-A架构TCR2_EL2寄存器详解与应用