Форматирование текущего времени

Я сделал описанным ниже способом, используя awk и sed.

команда:

echo "Mon Apr 22 05:06:00 UTC 2019"|awk '{$(NF-1)="";print $0}'| sed -r "s/\s+/ /g"| sed "s/ /,/g"

выход:

Mon,Apr,22,05:06:00,2019
0
12.10.2020, 10:45
2 ответа

Если единственная проблема заключается в том, что %Nпоказывает 9 цифр вместо 3, вы можете исправить это, добавив префикс с количеством цифр для отображения%3N

$ date +"%Y-%m-%d %H:%M:%S,%3N"
2020-10-12 09:52:19,931
1
18.03.2021, 22:58

Обратите внимание, что %Nявляется расширением GNU date, которое дает Nаносекундную часть текущего времени (0 -, дополненную до 9 цифр ). Вместо этого, чтобы получить миллисекунды, вы можете сделать:

date '+%F %T,%3N'

Если вы пишете zsh-скрипт, вы можете сделать его переносимым с помощью strftimeвстроенной:

zmodload zsh/datetime
strftime '%F %T,%3.'

Сокращение от:

zmodload zsh/datetime
strftime '%F %T,%3.' $epochtime

Или чтобы символ системы счисления был символом пользователя (, предполагая, что это не %, но я не знаю ни одной локали, где был бы символ системы счисления%):

zmodload zsh/datetime
zmodload zsh/langinfo
strftime "%F %T${langinfo[RADIXCHAR]}%3."

Если это скрипт ksh93, вы можете сделать это с помощью его printfвстроенной:

printf '%(%F %T,%3N)T\n'

Сокращение от:

printf '%(%F %T,%3N)T\n' now

Или снова с системой счисления пользователя (, если это не так%):

radixchar=$((1e-1))
radixchar=${radixchar//[0123456789]}
printf "%(%F %T${radixchar}%3N)T\n"
0
18.03.2021, 22:58

Теги

Похожие вопросы