使用以下命令获取日期没有问题:
$ date '+%d%m%y %H%M%S.%N'
250123 170411.504761505
但是不可能使用相同的格式设置它:
sudo date '+%d%m%y %H%M%S.%N' -u -s "250123 170411.504761505"
date: invalid date ‘250123 170411.504761505’
看起来小时、分钟和秒之间的分隔符是必需的。为什么?手册页似乎没有提到它。
它提到:
%H hour (00..23)
%M minute (00..59)
%S second (00..60)
因此,如果源字符串中有 6 位数字,它应该能够毫无问题地解析 IMO。
我认为纳米部分混淆了它,但没有:
$sudo date '+%d%m%y %H%M%S' -u -s "250123 170411"
date: invalid date ‘250123 170411’
您的格式字符串仅用于格式化输出字符串,不用于解析输入字符串。
支持的日历和时间输入格式在 GNU 日期信息手册(在线)的第 29 节“日期输入格式”的小节中进行了描述:
例如,这些输入格式可以工作:
或者
或者(这个有
-debug
选项)