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

如何在Bash中将RTC输出字符串转换为timedatectl所需时间格式?

转换RTC时间格式适配timedatectl设置需求

你可以通过拆分字段后重新拼接的方式实现格式转换,直接修改你的脚本即可:

#!/usr/bin/env bash

# 读取RTC数据并提取目标时间字符串
TIME=$(i2cdump -r 0-6 -y 0 0x68 b)
TIME_STR=${TIME:76:20}

# 将空格分隔的字段拆分到单独变量中
read SEC MIN HOUR DAY DATE MONTH YEAR <<< "$TIME_STR"

# 拼接为timedatectl要求的格式:'YYYY-MM-DD HH:MM:SS'
# 注:这里将两位年份补全为四位(如22→2022),若RTC输出四位年份可直接用$YEAR
FORMATTED_TIME="20${YEAR}-${MONTH}-${DATE} ${HOUR}:${MIN}:${SEC}"

# 执行时间设置(需要sudo权限)
sudo timedatectl set-time "$FORMATTED_TIME"

关键步骤说明:

  • 用read命令把空格分隔的原始时间字符串拆分成SEC/MIN/HOUR/DAY/DATE/MONTH/YEAR七个单独变量,方便自由调整顺序
  • 按照年份-月份-日期 小时:分钟:秒的目标格式拼接字符串,日期部分用连字符分隔,时间部分用冒号分隔
  • 由于你的RTC输出的是两位年份(如22),这里手动补全为四位(2022);如果你的RTC支持输出四位年份,直接替换为"${YEAR}-${MONTH}-${DATE} ${HOUR}:${MIN}:${SEC}"即可
  • timedatectl set-time需要管理员权限,执行脚本时要加sudo或者以root身份运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:01:15