GNU/Linux >> Belajar Linux >  >> Linux

Bash:hitung waktu yang berlalu antara dua cap waktu

Ini akan memberi Anda tanggal dalam hitungan detik (sejak zaman UNIX)

date --date '2017-08-17 04:00:01' +%s    # "1502938801"

Dan ini akan memberi Anda tanggal sebagai string yang dapat dibaca dari beberapa detik

date --date '@1502938801'    # "17 Aug 2017 04:00:01"

Jadi yang diperlukan hanyalah mengubah tanggal/stempel waktu Anda menjadi format yang GNU date dapat memahami, menggunakan matematika untuk menentukan perbedaan, dan menampilkan hasilnya

datetime1=20170817040001
datetime2=20160312000101

seconds1=$(date --date "$(echo "$datetime1" | sed -nr 's/(....)(..)(..)(..)(..)(..)/\1-\2-\3 \4:\5:\6/p')" +%s)
seconds2=$(date --date "$(echo "$datetime2" | sed -nr 's/(....)(..)(..)(..)(..)(..)/\1-\2-\3 \4:\5:\6/p')" +%s)

delta=$((seconds1 - seconds2))
echo "$delta seconds"    # "45197940 seconds"

Kami tidak menyediakan informasi zona waktu di sini, sehingga diasumsikan zona waktu lokal. Nilai Anda untuk detik dari datetime mungkin akan berbeda dengan milik saya. (Jika nilai Anda UTC maka Anda dapat menggunakan date --utc .)


Ini mudah dengan datediff perintah yang disediakan di dateutils kemasan.

ddiff -i '%Y%m%d%H%M%S' 20170817040001 20160312000101

Linux
  1. Perbedaan Antara Operator Bash [[ Vs [ Vs ( Vs ((?

  2. Bagaimana Cara Mengekstrak Log Antara Dua Cap Waktu?

  3. Atur tanggal, waktu, dan zona waktu di server Linux

  1. Dapatkan waktu saat ini dalam hitungan detik sejak Zaman di Linux, Bash

  2. Apa perbedaan antara #!/usr/bin/env bash dan #!/usr/bin/bash?

  3. Temukan file yang dibuat di antara rentang tanggal

  1. Ubah tanggal ISO menjadi detik sejak zaman di linux bash

  2. Apa perbedaan antara menjalankan skrip Bash vs sumbernya?

  3. Atur waktu waktu eksekusi beberapa perintah