Aqui está uma solução ( Linux, NOT Unix ):
date --set="2011-12-07 01:20:15.962" && date --rfc-3339=ns
Observe o atraso:
CURTIME='date --rfc-3339=ns'
date --set="${CURTIME}"
NEWTIME='date --rfc-3339=ns'
echo ${CURTIME}
echo ${NEWTIME}
2011-12-07 01:48:54.687216122+00:00
2011-12-07 01:48:54.720541318+00:00
Como você notará, milissegundos inteiros de atraso são introduzidos. Isso se deve ao tempo necessário para inicializar a memória e carregar o binário date
. Isto é verdade para todos os shells e o exec
de insert-higher-level-language-here
No entanto, se você precisar apenas de resolução de segundos abaixo no intervalo de 10 segundos de segundo, isso será bom o suficiente em muitos casos.