GNU/Linux >> Linux Esercitazione >  >> Linux

In che modo la data di Coreutil riesce a ottenere risultati così strani?

Stavo giocando con date per provare a convertire espressioni come "2 ore" in un numero di secondi come 7200. Ho pensato di poterlo eseguire con invocazioni come:

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

Tuttavia, ho notato risultati estremamente strani mentre lo facevo. (Il mio /etc/timezone contiene "Europa/Parigi", da cui l'uso di TZ per forzare gli orari 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

Il primo risultato è abbastanza ragionevole, ma sono davvero totalmente perplesso su come date potrebbe essere venuto con gli ultimi tre risultati. Qualcuno capisce la logica tra questi risultati?

Risposta accettata:

Penso che stia prendendo il tuo + x come identificatore di fuso orario (ad esempio, considera 2013-04-25 19:52:36 +4 è un timestamp valido, in un fuso orario 4 ore prima dell'ora UTC).

È quindi vedere la parola "minuti" e trattarla come sinonimo di minuto, quindi darti un minuto dopo.

Se inserisci un specificatore di fuso orario esplicito, funziona:

[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

Nota il UTC dopo il campo dei secondi. Puoi anche inserire un secondo +0 :

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

... ma almeno personalmente, è molto più difficile da leggere.

Oppure puoi inserire una Z dopo i secondi, ecc. In realtà non hai bisogno del TZ variabile di ambiente da impostare su UTC negli esempi precedenti.


Linux
  1. Linux:come ottenere la data di creazione di un file su un volume logico Ntfs?

  2. Come ottenere solo i file creati dopo un appuntamento con Ls?

  3. Come ottengo la differenza tra due date sotto bash

  4. Come ottenere l'utilizzo della CPU

  5. Come ottenere la data/ora di creazione del file in Bash/Debian?

Come ottenere la data e l'ora correnti in Python

Come ottenere la data e l'ora correnti in JavaScript

Come ottenere l'orologio per mostrare la data?

Come ottenere la data e l'ora formattate in Python

Come ottenere ps per stampare il gruppo?

Come ottenere la data di scadenza della password dell'utente da Active Directory?