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


26

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

echo $(date +%x_%r)

返回:

08/20/2012_02:26:14 PM

有什么建议么?


2
您使用任何理由echo吗?这似乎是多余的,你可以用date直接
LK-

我计划将当前时间存储在参数中,并将其用作输出文件名的一部分。
汉克2012年

6
为什么不使用ISO格式的日期字符串?那些/在文件名没有好...(en.wikipedia.org/wiki/ISO_8601
约翰·


最常见的格式:zxq9.com/archives/795
zxq9

Answers:


26
date +%x_%H:%M:%S:%N

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

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

将其存储在var中:

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

1
这是特定于Linux的。在OS X或* BSD上不起作用。
cnst

注意%x返回语言环境的日期表示形式。因此可以根据当前语言环境进行更改。如果您想要特定的日期格式,则最好提供明确的日期格式(其他答案也显示在下面)date +'%d/%m/%Y_%H:%M:%S:%N
studgeek

23

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

$ date +'%d/%m/%Y %H:%M:%S:%3N'
12/04/2014 18:36:20:659

或与您所需的用途$(…)

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

但是请注意,%N根据目标系统或bash版本的不同,可能无法实现。在嵌入式系统»GNU bash,版本4.2.37(2)-发行版(arm-buildroot-linux-gnueabi)«上进行了测试,没有%N(两者都不存在 %3N):

date +"%F %T,%N"
2014-01-08 16:44:47,%N

2
看起来FreeBsd或Mac Osx都不支持%N%3N
2014年

我添加了echo "$(date +'%F %H:%M:%S:%3N') Failed" >> logfile.txt,但是它写入file.file 08:21:02OURCE:184 Failed了日志文件。我做错什么了?
Sven

在macOS上有gdateHomebrew上的apple.stackexchange.com/a/135749/181223
phil pirozhkov


0

像这样

日期+'%d /%m /%Y_%H:%M:%S:%N'

使用%N单位为纳秒(000000000..999999999),因为我现在找不到毫秒


0

你可以试试:

echo `date +"%Y_%m_%d %H:%M:%S,"``date +%N/1000000|bc -l|grep -Eo "^([0-9]{0,3})"`

由于某种原因,省略了“`”,因此请将其放在回显之后和末尾,或者简单地:

date +"[%Y_%m_%d %H:%M:%S,%3N]"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.