Tampilkan cap waktu dalam dd / mm / yyyy_hh: mm: ss: ms di Unix atau Linux

26

Saya perlu menampilkan tanggal dan waktu dalam format yang diinginkan di Unix / Linux. Format yang saya inginkan adalah: dd / mm / yyyy jj: mm: ss: ms di Unix atau Linux. Saya hampir menggunakan perintah berikut:

echo $(date +%x_%r)

Ini mengembalikan:

08/20/2012_02:26:14 PM

Ada saran?

Gulungan
sumber
2
Apakah ada alasan yang Anda gunakan echo? Tampaknya berlebihan, Anda hanya dapat menggunakan datesecara langsung
lk-
Saya berencana untuk menyimpan waktu saat ini di parameter dan menggunakannya sebagai bagian dari nama file output.
Hank
6
Mengapa tidak menggunakan string tanggal berformat ISO? Mereka / tidak baik dalam nama file ... ( en.wikipedia.org/wiki/ISO_8601 )
Johan
Format paling umum: zxq9.com/archives/795
zxq9

Jawaban:

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

jika Anda perlu mencetak hanya dua num pertama sebagai ms:

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

untuk menyimpannya di var:

VAR=$(date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/')
buru-buru
sumber
1
Ini khusus untuk Linux; itu tidak berfungsi pada OS X atau * BSD.
cnst
Catatan% x mengembalikan representasi tanggal lokal. Jadi itu bisa berubah berdasarkan lokal saat ini. Jika Anda menginginkan format tanggal tertentu, Anda mungkin lebih baik menyediakannya secara eksplisit (seperti jawaban lain juga ditunjukkan di bawah) date +'%d/%m/%Y_%H:%M:%S:%N.
studgeek
23

Jika Anda menginginkan milidetik alih-alih ketepatan nanodetik, Anda dapat menggunakan %3Nsebagai ganti %N:

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

atau dengan penggunaan yang Anda inginkan dari $(…):

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

Tetapi berhati-hatilah, itu %Nmungkin tidak diterapkan tergantung pada sistem target Anda atau versi bash. Diuji pada sistem tertanam »GNU bash, versi 4.2.37 (2) -release (arm-buildroot-linux-gnueabi)« tidak ada %N(keduanya %3N):

date +"%F %T,%N"
2014-01-08 16:44:47,%N
Joe
sumber
2
Sepertinya FreeBsd atau Mac Osx tidak mendukung %Natau %3N.
Joe
Saya menambahkan echo "$(date +'%F %H:%M:%S:%3N') Failed" >> logfile.txt, tetapi itu menulis file.file 08:21:02OURCE:184 Failedke logfile. Apa kesalahan yang telah aku perbuat?
Sven
Di macOS ada gdatedi Homebrew apple.stackexchange.com/a/135749/181223
phil pirozhkov
0

Sesuatu seperti ini

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

Digunakan% N untuk nanodetik (000000000..999999999) karena saya tidak menemukan milidetik sekarang

Johan
sumber
0

Anda dapat mencoba:

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

Untuk beberapa alasan '' 'dihilangkan, jadi letakkan setelah gema dan di akhir, atau hanya:

date +"[%Y_%m_%d %H:%M:%S,%3N]"
pengguna2538887
sumber