如何用shell脚本计算两个毫秒级epoch时间差值并判断令牌剩余天数
Shell 脚本实现毫秒级 epoch 时间戳有效期校验
核心实现逻辑
- 单位转换规则:10天对应的毫秒阈值为
864000000(计算方式:10 * 24小时 * 3600秒 * 1000毫秒) - 运算逻辑:用令牌过期毫秒时间戳减去当前毫秒时间戳,得到剩余有效毫秒数,直接和阈值对比即可实现判断,如需展示剩余天数再做除法即可
- 示例值校验:你给出的示例过期时间
1640237992708减示例当前时间1634108098242得到差值约6130万毫秒,对应约71天,大于10天阈值,不需要触发刷新
完整可运行脚本
#!/bin/bash # 替换为实际读取到的令牌过期毫秒级时间戳 TOKEN_EXPIRE_MS=1640237992708 # 获取当前系统毫秒级epoch时间戳(Linux默认GNU date支持,macOS需替换为gdate) CURRENT_MS=$(date +%s%3) # 10天对应的毫秒阈值 TEN_DAYS_MS=864000000 # 计算剩余有效毫秒数 REMAIN_MS=$(( TOKEN_EXPIRE_MS - CURRENT_MS )) # 阈值判断 if [ ${REMAIN_MS} -lt ${TEN_DAYS_MS} ]; then echo "令牌剩余有效期不足10天,触发新令牌生成逻辑" # 此处写入你生成新令牌的具体业务代码 else REMAIN_DAYS=$(( REMAIN_MS / 86400000 )) echo "令牌有效期充足,剩余约 ${REMAIN_DAYS} 天" fi
兼容说明
- macOS系统自带的date命令不支持毫秒输出,可执行
brew install coreutils安装GNU日期工具后,将脚本里的date替换为gdate即可正常运行 - 如果需要更精确的天数判断,可通过awk做浮点运算,常规有效期校验用上述整数运算即可满足安全需求
内容的提问来源于stack exchange,提问作者Harshad Solanki
相关产品推荐
相关产品推荐

