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?


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/')

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

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



0

Sesuatu seperti ini

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

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


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]"
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.