Puncte:0

cum să iei diferența de timp între două date și oră

drapel ch

Am jurnalele de acces de pe serverul meu. Trebuie să iau diferența de timp dintre două jurnale. Jurnalele mele de acces au următorul format de oră: „14/Apr/2021 06:25:09”.

Pentru a lua diferența dintre două marcaje de timp, m-am gândit să convertesc marcajele de timp date în secunde de la epocă și apoi să iau diferența.

Exemplu de jurnal de acces:

106.222.52.107 - - [14/Apr/2021:06:25:06 -0400] „POST URL1 HTTP/1.1” 204 ​​4649 708 „Mozilla/5.0 (Linux; Android 11; V2037) AppleWebKit/5.037) Apple7WebKit/5. ) Chrome/83.0.4103.106 Mobile Safari/537.36"

157.34.255.192 - - [14/Apr/2021:06:25:08 -0400] „GET URL2 200 5309 1125 „Mozilla/5.0 (Linux; Android 7.1.1; CPH1729 Build/N6K36Q5HTML, Apple, like. Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36"

1.38.48.202 - - [14/Apr/2021:06:25:10 -0400] „GET URL3 HTTP/1.1” 200 8692 64616 „Mozilla/5.0 (iPhone; CPU iPhone OS 14_4_2 ca Mac OS X) AppleWeb.1./605. 15 (KHTML, ca Gecko) Versiunea/14.0.3 Mobile/15E148 Safari/604.1"

106.222.52.107 - - [14/Apr/2021:06:28:06 -0400] URL4 200 10506 1063 „Mozilla/5.0 (Linux; Android 11; V2037) AppleWebKit/537.36 (K)Chrome/537.36 (K.03.04)HTML/like Gec.ko.01 Safari mobil/537,36"

157.34.255.192 - - [14/Apr/2021:06:29:06 -0400] URL5 200 620 866 "Mozilla/5.0 (Linux; Android 7.1.1; CPH1729 Build/N6F26Q/5K3, like HTML) Apple7Kc6. Chrome/61.0.3163.98 Mobile Safari/537.36"

Deci vreau să convertesc „14/Apr/2021:06:25:06” în secunde de la epocă.

Folosesc comanda dată pentru a converti marca temporală dată în secunde. Mai jos este comanda:

data „+%s” -d="14/Apr/2021 06:25:09"

Dă următoarea eroare:

data: dată nevalidă â=14/Apr/2021 06:25:09â

Dar cand Schimb pozițiile pe zi și pe lună atunci merge bine.

data „+%s” -d „14/04/2021 06:25:09” Ieșire: 1618399509

Comanda de dată are un format predefinit? Modificarea formatului de marcaj de timp în jurnalele de acces este dificilă. Ați putea vă rog să oferiți soluția pentru asta? Trebuie să scriu un script shell în care trebuie să citesc jurnalele de acces și, în funcție de IP și de marcaj de timp, trebuie să creez un alt fișier de date. Eu folosesc Ubuntu 20.

drapel hr
Puteți găsi acest lucru util: [Forțați data pentru a citi ziua/luna/anul](https://unix.stackexchange.com/questions/296052/force-date-to-read-day-month-year)
guiverc avatar
drapel cn
Ubuntu 20? Nu există o astfel de lansare, deci te referi la Ubuntu Core 20? (Ubuntu folosește *year.month* pentru produsele bazate pe *deb* și formatul *year* pentru produsele *snap*)/ De asemenea, poate ajuta dacă *curățați* postarea; ce vrei să spui prin a începe cu „*Închis. Această întrebare necesită detalii sau claritate. În prezent nu acceptă răspunsuri. Adăugați detalii și clarificați problema pe care o rezolvați. Acest lucru îi va ajuta pe alții să răspundă la întrebare. Puteți edita întrebarea sau postați unul nou.*" - da, este foarte neclar!
Jeff Schaller avatar
drapel ru
Ați luat puțin prea mult text când ați copiat/lipsat de la [întrebarea SO închisă](https://stackoverflow.com/questions/68493819/convert-a-given-time-stamp-into-seconds); Vă rugăm să încercați să vă faceți întrebările cât mai clare și concentrate posibil pentru fiecare comunitate. Mulțumesc!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.