Hiển thị dấu thời gian bằng dd / mm / yyyy_hh: mm: ss: ms trong Unix hoặc Linux


26

Tôi cần hiển thị ngày và giờ ở định dạng mong muốn trong Unix / Linux. Định dạng mong muốn của tôi là: dd / mm / yyyy hh: mm: ss: ms trong Unix hoặc Linux. Tôi đã kết thúc bằng cách sử dụng lệnh sau:

echo $(date +%x_%r)

Điều này trả về:

08/20/2012_02:26:14 PM

Bất kỳ đề xuất?


2
Có bất kỳ lý do bạn đang sử dụng echo? Nó có vẻ dư thừa, bạn chỉ có thể sử dụng datetrực tiếp
lk-

Tôi dự định lưu trữ thời gian hiện tại trong một tham số và sử dụng nó như một phần của tên tệp đầu ra.
Hank

6
Tại sao không sử dụng chuỗi ngày định dạng ISO? Những cái đó / không tốt trong tên tập tin ... ( en.wikipedia.org/wiki/ISO_8601 )
Johan


Các định dạng phổ biến nhất: zxq9.com/archives/795
zxq9

Câu trả lời:


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

nếu bạn chỉ cần in hai chữ số đầu tiên là ms:

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

để lưu trữ nó trong var:

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

1
Đây là đặc thù của Linux; nó không hoạt động trên OS X hoặc * BSD.
cnst

Lưu ý% x trả về đại diện ngày của miền địa phương. Vì vậy, nó có thể thay đổi dựa trên miền địa phương hiện tại. Nếu bạn muốn định dạng ngày cụ thể đó, có lẽ tốt hơn hết bạn nên cung cấp nó (vì các câu trả lời khác cũng hiển thị bên dưới) date +'%d/%m/%Y_%H:%M:%S:%N.
studgeek

23

Nếu bạn muốn độ chính xác của mili giây thay vì độ chính xác của nano giây, bạn có thể sử dụng %3Nthay vì %N:

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

hoặc với việc sử dụng mong muốn của bạn $(…):

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

Nhưng hãy lưu ý, điều đó %Ncó thể không được thực hiện tùy thuộc vào hệ thống đích hoặc phiên bản bash của bạn. Đã thử nghiệm trên một hệ thống nhúng »bash GNU, phiên bản 4.2.37 (2) -release (arm-buildroot-linux-gnueabi)« không có %N(không %3N):

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

2
Có vẻ như FreeBsd và Mac Osx đều không hỗ trợ %Nhoặc %3N.
Joe

Tôi đã thêm echo "$(date +'%F %H:%M:%S:%3N') Failed" >> logfile.txt, nhưng nó đã viết file.file 08:21:02OURCE:184 Failedvào logfile. Tôi đã làm gì sai?
Sven

Trên macOS có gdatetrong Homebrew apple.stackexchange.com/a/135749/181223
phil pirozhkov


0

Một cái gì đó như thế này

ngày + '% d /% m /% Y_% H:% M:% S:% N'

Đã sử dụng% N cho nano giây (000000000..999999999) vì tôi không tìm thấy mili giây ngay bây giờ


0

Bạn co thể thử:

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

Vì một số lý do '`' bị bỏ qua, vì vậy hãy đặt nó sau tiếng vang và ở cuối, hoặc đơn giản là:

date +"[%Y_%m_%d %H:%M:%S,%3N]"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.