GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Tanggal Coreutil Berhasil Mendapatkan Hasil Yang Aneh?

Saya bermain-main dengan date untuk mencoba mengonversi ekspresi seperti “2 jam” menjadi beberapa detik seperti 7200. Saya pikir saya bisa melakukan ini dengan permintaan seperti:

date -d "1970-01-01 00:00:00 + 2 hours" +"%s"

Namun, saya melihat hasil yang sangat aneh saat melakukannya. (/etc/timezone saya berisi "Eropa/Paris", maka penggunaan TZ untuk memaksa waktu UTC.)

omega:~$ TZ=utc date -d "1970-01-01 00:00:00" +"%s"             
0
omega:~$ TZ=utc date -d "1970-01-01 00:00:00 + 0 minutes" +"%s"
60
omega:~$ TZ=utc date -d "1970-01-01 00:00:00 + -1 minutes" +"%s" 
3660
omega:~$ TZ=utc date -d "1970-01-01 00:00:00 + 1 minutes" +"%s" 
-3540

Hasil pertama cukup masuk akal, tetapi saya benar-benar bingung tentang bagaimana date mungkin datang dengan tiga hasil terakhir. Adakah yang mengerti logika di antara hasil-hasil itu?

Jawaban yang Diterima:

Saya pikir itu mengambil + x Anda sebagai penentu zona waktu (mis., pertimbangkan 2013-04-25 19:52:36 +4 adalah stempel waktu yang valid, dalam zona waktu 4 jam lebih cepat dari UTC).

Itu kemudian melihat kata 'menit', dan memperlakukannya sebagai sinonim dari menit, jadi memberi Anda satu menit kemudian.

Jika Anda memasukkan penentu zona waktu eksplisit, itu berfungsi:

[email protected]:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC" +"%s"   
0
[email protected]:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + 0 minutes" +"%s"
0
[email protected]:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + -1 minutes" +"%s" 
-60
[email protected]:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + 1 minutes" +"%s" 
60

Perhatikan UTC setelah kolom detik. Anda juga dapat memasukkan +0 kedua :

[email protected]:~$ TZ=utc date -d "1970-01-01 00:00:00 +0 + -1 minutes" +"%s"
-60

… tapi setidaknya secara pribadi, itu jauh lebih sulit untuk dibaca.

Atau Anda dapat menempatkan Z setelah detik, dll. Anda sebenarnya tidak memerlukan TZ variabel lingkungan yang akan disetel ke UTC dalam contoh di atas.


Linux
  1. Bagaimana Melakukan A Ls Dan Kemudian Mengurutkan Hasil Berdasarkan Tanggal Dibuat?

  2. Linux – Bagaimana Cara Mendapatkan Tanggal Pembuatan File Pada Volume Logika Ntfs?

  3. Cara mendapatkan penggunaan CPU

  1. Bagaimana cara mendapatkan ps untuk mencetak grup?

  2. Bagaimana cara mengurutkan hasil dari perintah ls berdasarkan tanggal modifikasi (direktori terlebih dahulu)?

  3. Bagaimana PulseAudio dimulai?

  1. Cara Memeriksa Zona Waktu di Linux

  2. Bagaimana Mengelola Kemampuan File Linux

  3. Bagaimana cara Linux mengalokasikan bandwidth antar proses?