web-dev-qa-db-ja.com

UnixまたはLinuxでは、タイムスタンプをdd / mm / yyyy_hh:mm:ss:msで表示します

Unix/Linuxで日付と時刻を希望の形式で表示する必要があります。私の望ましい形式は、UnixまたはLinuxではdd/mm/yyyy hh:mm:ss:msです。私は次のコマンドを使用して近づきました:

echo $(date +%x_%r)

これは次を返します:

08/20/2012_02:26:14 PM

助言がありますか?

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

最初の2つの数値のみを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/')
27
rush

ナノ秒の精度ではなくミリ秒が必要な場合は、_%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
_

ただし、ターゲットシステムやbashのバージョンによっては_%N_が実装されない場合があることに注意してください。組み込みシステムでテスト済み"GNU bash、バージョン4.2.37(2)-release(arm-buildroot-linux-gnueabi)"_%N_がありません(_%3N_もありません):

_date +"%F %T,%N"
2014-01-08 16:44:47,%N
_
24
Joe
5
Nifle

あなたが試すことができます:

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]"
0
user2538887

このようなもの:

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

中古 %Nナノ秒(000000000..999999999)の場合、現在ミリ秒が見つからなかったため

0
Johan