格式化当前时间

格式化当前时间

我想要以下格式的时间

2020-10-12 10:41:42,526 

如何做呢。我尝试过,但看起来不正确

date +"%Y-%m-%d %H:%M:%S,%N"

答案1

如果唯一的问题是%N显示 9 位而不是 3 位,您可以通过在其前面加上要显示的位数来修复它%3N

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

答案2

请注意,这%N是一个 GNUdate扩展,它给出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"

相关内容