Làm cách nào để chuyển đổi một ngày thành mili giây kể từ Unix epoch trong bash?


7

Tôi đã có một ngày ở định dạng:

22-Sep-2014 10:32:35

Tôi cần dấu thời gian 13 chữ số, nhưng khi tôi chuyển đổi theo cách này

time=$(date -d "$DATE" '+%s')

Tôi nhận được một số gồm 10 chữ số

Khi tôi cố gắng

tt=$(date -d "$DATE");
time=$($tt +'%s * 1000 + %-N / 1000000')

tôi có

line 22: Mon: command not found


3
Câu hỏi được liên kết liên quan đến thời gian hiện tại, kể từ khi lệnh được chạy, không chuyển đổi thời gian hiện tại.
Patrick

Câu trả lời:


5

Lần thử thứ hai của bạn đã gần, chỉ cần nói datelệnh để thêm mili giây vào cuối. Bạn có thể làm điều này với các %Nđịnh dạng. %Nmở rộng đến nano giây, và sau đó bạn có thể cắt ngắn nó bằng cách sử dụng %3N.
Tuy nhiên, lưu ý rằng thời gian nhập ví dụ của bạn không có bất kỳ mili giây nào trên đó, vì vậy bạn chỉ có thể thêm .000vào cuối.
Giả sử đây không phải là điều bạn muốn, đây là một ví dụ cung cấp độ chính xác đến mili giây:

$ DATE="22-Sep-2014 10:32:35.012"
$ date -d "$DATE" +'%s.%3N'
1411396355.012

0

Tôi đã nhận nó và đó là:

$date -u +'%Y-%m-%d %H:%M:%S.%3N'

và đoạn dưới đây là đoạn mã ngắn nhất ở trên:

$date -u +"%F %T.%3N

và đầu ra cho cả hai như sau:

2017-05-12 23:10:54.268

Đây -uchỉ là cho múi giờ UTC. Bạn có thể loại bỏ nó.


BTW, tôi đã sử dụng nó trong linux để lấy ngày cho định dạng ngày của MySQL
Venky
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.