Não há problema em obter a data com o comando abaixo:
$ date '+%d%m%y %H%M%S.%N'
250123 170411.504761505
No entanto, configurá-lo usando o mesmo formato não é possível:
sudo date '+%d%m%y %H%M%S.%N' -u -s "250123 170411.504761505"
date: invalid date ‘250123 170411.504761505’
Parece que delimitadores entre horas, minutos e segundos são necessários. Por que? A página do manual não parece mencioná-lo.
Ele menciona:
%H hour (00..23)
%M minute (00..59)
%S second (00..60)
Portanto, se houver 6 dígitos na string de origem, ela poderá analisá-la sem problemas IMO.
Achei que a nano-parte confundiu, mas não:
$sudo date '+%d%m%y %H%M%S' -u -s "250123 170411"
date: invalid date ‘250123 170411’
Sua string de formato é usada apenas para formatar a string de saída e não para analisar a string de entrada.
Os formatos de entrada de calendário e hora suportados são descritos nas subseções da seção 29 "Formatos de entrada de data" do manual de informações de data GNU ( online ):
Por exemplo, esses formatos de entrada funcionariam:
ou
ou (este com
-debug
opção)