Відображення позначки часу в dd / mm / yyyy_hh: mm: ss: ms в Unix або Linux


26

Мені потрібно відобразити дату та час у потрібному форматі в Unix / Linux. Мій бажаний формат: dd / mm / yyyy hh: mm: ss: ms в Unix або Linux. Я наблизився, використовуючи таку команду:

echo $(date +%x_%r)

Це повертає:

08/20/2012_02:26:14 PM

Будь-які пропозиції?


2
Чи є якась причина, яку ви використовуєте echo? Це здається зайвим, ви можете просто скористатися dateбезпосередньо
lk-

Я планую зберігати поточний час у параметрі та використовувати його як частину імені вихідного файлу.
Генк

6
Чому б не використовувати рядок дати у форматі ISO? Ті / не є добрими у назви файлів ... ( en.wikipedia.org/wiki/ISO_8601 )
Йоган

Дивіться це посилання: ccollins.wordpress.com/2009/01/06 / ... .

Найпоширеніші формати: zxq9.com/archives/795
zxq9

Відповіді:


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

якщо вам потрібно надрукувати лише два перші числа у форматі ms:

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

щоб зберегти його у варі:

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.
Джо

Я додав echo "$(date +'%F %H:%M:%S:%3N') Failed" >> logfile.txt, але він записав file.file 08:21:02OURCE:184 Failedу логфайл. Що я зробив не так?
Свен



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]"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.