You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Shell脚本:如何指定格式将%y/%m/%d %H:%M:%S字符串转为时间戳?

解决Linux下指定日期格式转换为时间戳的问题

嘿,我明白你的困扰!Linux上的GNU date命令和OS X里的BSD版本确实不一样,没有-j -f这种直接指定输入格式的参数,但咱们有几种替代方案能解决这个问题:

方法1:先转换日期格式再用GNU date处理

GNU date对YYYY-MM-DD HH:MM:SS或者MM/DD/YYYY HH:MM:SS这类格式识别很友好,所以我们可以用文本处理工具(比如sed)把你的%y/%m/%d %H:%M:%S格式转换成它能识别的样式:

date -d "$(echo '18/04/25 16:04:00' | sed -E 's/([0-9]{2})\/([0-9]{2})\/([0-9]{2})/20\1-\2-\3/')" "+%s"

解释一下这个命令:

  • sed的正则表达式把18/04/25替换成2018-04-25,补全了年份的前两位
  • 转换后的字符串传给date -d,就能正常输出对应的时间戳了

方法2:用Python跨平台处理

Python的datetime模块可以直接指定输入格式解析日期,写法更直观,而且跨平台通用:

Python 3版本:

python3 -c "from datetime import datetime; print(datetime.strptime('18/04/25 16:04:00', '%y/%m/%d %H:%M:%S').timestamp())"

Python 2版本(如果还在用的话):

Python 2的datetime没有timestamp()方法,需要用strftime间接转换:

python -c "from datetime import datetime; print(int(datetime.strptime('18/04/25 16:04:00', '%y/%m/%d %H:%M:%S').strftime('%s')))"

方法3:用dateutils工具(需要额外安装)

如果你的系统可以安装第三方工具,dateutils里的dateparse命令完美支持指定输入格式,用法和OS X的date -j -f几乎一致:

先安装(以Debian/Ubuntu为例):

sudo apt install dateutils

然后执行转换:

dateparse -i '%y/%m/%d %H:%M:%S' -o '%s' '18/04/25 16:04:00'

这样就能直接得到你想要的时间戳啦!

内容的提问来源于stack exchange,提问作者Khaino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:18:33