在 Unix 或 Linux 中以 dd/mm/yyyy_hh:mm:ss:ms 显示时间戳

Han*_*ank 27 date timestamps

我需要在 Unix/Linux 中以所需格式显示日期和时间。我想要的格式是:在 Unix 或 Linux 中为 dd/mm/yyyy hh:mm:ss:ms。我使用以下命令接近:

echo $(date +%x_%r)
Run Code Online (Sandbox Code Playgroud)

这将返回:

08/20/2012_02:26:14 PM
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Joe*_*Joe 31

如果您想要毫秒而不是纳秒精度,您可以使用%3N代替%N

$ date +'%d/%m/%Y %H:%M:%S:%3N'
12/04/2014 18:36:20:659
Run Code Online (Sandbox Code Playgroud)

或您想要的用途$(…)

$ echo "$(date +'%d/%m/%Y %H:%M:%S:%3N')"
12/04/2014 18:36:20:659
Run Code Online (Sandbox Code Playgroud)

但请注意,%N根据您的目标系统或 bash 版本,这可能无法实现。在嵌入式系统上测试 »GNU bash,版本 4.2.37(2)-release (arm-buildroot-linux-gnueabi)« 没有%N(都没有 %3N):

date +"%F %T,%N"
2014-01-08 16:44:47,%N
Run Code Online (Sandbox Code Playgroud)

  • 看起来 FreeBsd 和 Mac Osx 都不支持 `%N` 或 `%3N`。 (3认同)

rus*_*ush 28

date +%x_%H:%M:%S:%N
Run Code Online (Sandbox Code Playgroud)

如果您只需要将前两个数字打印为 ms:

date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/'
Run Code Online (Sandbox Code Playgroud)

将其存储在 var 中:

VAR=$(date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/')
Run Code Online (Sandbox Code Playgroud)

  • 这是 Linux 特有的;它不适用于 OS X 或 *BSD。 (3认同)