Tekniker för epoktidsomvandling:
1. Konvertera datum till epoktid:
Att konvertera ett datum och en tid till epoktid på några sekunder kan du använda kommandot `date` med alternativet ` +%s`.
Till exempel, för att konvertera datum och tid "1 januari 1970 00:00:00 UTC" till epoktid, skulle du använda följande kommando:
```
$ date --utc -d '1970-01-01 00:00:00 UTC' +%s
```
Detta kommando skulle mata ut följande epoktid:
```
0
```
2. Konvertera epoktid till datum:
Att konvertera epoktid till ett datum och tid kan du använda kommandot `date` med alternativet ` -d @`.
Till exempel, för att konvertera epoktiden "0" till ett datum och en tid, skulle du använda följande kommando:
```
$ date -d @0
```
Detta kommando skulle mata ut följande datum och tid:
```
Tors 1 januari 00:00:00 UTC 1970
```
3. Lägg till/subtrahera sekunder till/från epoktid:
För att lägga till eller subtrahera sekunder från epoktid kan du använda kommandot `date` med alternativen ` -d @` och ` +%s`.
Till exempel, för att lägga till 60 sekunder till epoktiden "0", skulle du använda följande kommando:
```
$ date -d @0 +%s
```
Detta kommando skulle mata ut följande epoktid:
```
60
```
För att subtrahera 60 sekunder från epoktiden "60" skulle du använda följande kommando:
```
$ date --date='@60 sekunder' -u +%s
```
5. Konvertera sekunder till datumformat:
```
$ date -d @1585233869
```
För att subtrahera 1 dag (86400 sekunder) från epoktid:
```
$ date -d "nu - 1 dag" +%s
```
Här är 13 bästa exempel på att konvertera eller ändra tidsepok med hjälp av datumverktyget på Linux eller Unix:
1. Konvertera datum till epoktid, med tanke på tidszon:
Till exempel, för att konvertera datum och tid "1 januari 1970 12:00:00 PM EST" till epoktid i sekunder, skulle du använda följande kommando:
```
$ date --date '1970-01-01 12:00:00 EST' +%s
```
Här används `date` med alternativet `--date` för att konvertera en sträng som representerar datum och tid till epoktiden. ` +%s` formaterar utdata som antalet sekunder sedan 1 januari 1970, 00:00:00 UTC.
Detta kommando skulle mata ut följande epoktid:
```
3600
```
2. Konvertera epoktid till datum, med tanke på UTC:
Till exempel, för att konvertera epoktiden "1585233869" till ett datum och en tid i UTC-format, skulle du använda följande kommando:
```
$ date -ud @1585233869
```
I det här exemplet används alternativet `-ud` med symbolen `@` för att tolka epoktiden för `1585233869` som en Unix-tidsstämpel i UTC.
Detta kommando skulle mata ut följande datum och tid:
```
Sön 29 mars 18:24:29 UTC 2020
```
3. Konvertera epoktid till lokal tidszon:
För att konvertera epoktiden "1585233869" till ett datum och en tid i en specifik tidszon, använd `date -d @1585233869 -T "timezone"`, och ersätt "tidszon" med din önskade tidszon.
```
$ date -d @1585233869 -T "America/New_York"
```
Detta skulle visa:
```
Sön 29 mars 13:24:29 EDT 2020
```
4. Konvertera datum till epokmillis (millisekunder sedan epok):
För att konvertera ett datum som "1 juli 2020, 12:30 PM" till millisekunder, använd `datum +%s%3N`, där `+%s` är sekunder sedan epok och `%3N` lägger till tre siffror för millisekunder .
```
$ date --date '1 juli 2020, 12:30 PM' +%s%3N
```
Detta ger epok millisekunder:
```
1593630600992
```
5. Konvertera epokmilli till mänskligt läsbart datum:
För att konvertera epokmillis, som 1593630600000, till en datumsträng, använd `date -d @epoch-millis +'%Y-%m-%d %H:%M:%S.%3N'`.
```
$ date -d @1593630600000 +'%Y-%m-%d %H:%M:%S.%3N'
```
Produktion:
```
2020-07-01 12:30:00.000
```
6. Hämta aktuellt datum och tid i maskinläsbart format:
`date +%s%3N` visar epok millisekunder, användbart när man jämför två datum.
```
$ datum +%s%3N
```
Produktion:
```
1593633240539
```
7. Lägg till eller subtrahera dagar från epok:
`date -d @epoch-seconds +days` justerar epoktiden med det angivna antalet dagar. Till exempel:
```
$ date -d @1593630600 +3 dagar
```
Produktion:
```
Tors 4 juli 12:30:00 EDT 2020
```
8. Subtrahera datum för att beräkna skillnaden:
För att beräkna skillnaden mellan två datum, hitta deras epoksekunder och subtrahera. Till exempel:
```
$ end_time=$(datum +%s)
$ start_time=$(datum -d "2019-07-01" +%s)
$ difference_in_seconds=$(( end_time - start_time ))
```
9. Lägg till eller subtrahera tidsintervall:
För att lägga till eller subtrahera specifika intervall som 5 timmar och 30 minuter från en given epoktid, använd:
```
$ date -d @1593630600 +5 timmar -30 minuter
```
Produktion:
```
Fre 2 juli 12:00:00 EDT 2020
```
10. Räkna datum till framtida händelse:
För att avgöra hur lång tid det tar kvar till ett specifikt datum i framtiden, konvertera båda relevanta datumen till epoksekunder och beräkna skillnaden. Till exempel:
```
$ end_time=$(datum -d "2021-12-25 00:00" +%s)
$ start_time=$(datum +%s)
$ seconds_until_Christmas=$(( end_time - start_time ))
```
11. Räkna datum sedan tidigare händelse:
Att räkna antalet dagar sedan en händelse som en födelsedag skulle på samma sätt innebära att epoksekunderna av händelsedatumet subtraheras från det aktuella datumet:
```
$ födelsedag=$(datum -d "1999-09-01" +%s)
$ aktuell_tid=$(datum +%s)
$ days_since_birthday=$(( (nuvarande_tid - födelsedag)/(60*60*24) ))
```
12. Generera slumpmässig epoktid:
För att skapa en slumpmässig tidsstämpel inom ett angivet datumintervall, använd följande kommando:
```
$ min_time=$(datum -d "2019-07-01" +%s)
$ max_time=$(datum -d "2020-07-31" +%s)
$ random_time=$(shuf -i $min_time-$max_time -n1)
$ date -d @$random_time
```
13. Konvertera läsbara tidsperioder till sekunder:
För att förenkla tidsberäkningar, konvertera mänskligt läsbara tidsperioder till sekunder med hjälp av "expr"-kalkylatorn:
```
$ seconds_5_hours=$(expr 5 \* 60 \* 60)
$ date +%s -d "nu - $seconds_5_hours seconds"
```
Detta visar aktuellt datum/tid minskat med 5 timmar:
```
Fre 9 juli 15:02:20 EDT 2021
```
Kom ihåg att när du hanterar tidsrelaterade beräkningar är det avgörande att välja rätt tidszon för att säkerställa korrekta resultat.