Edycja: za pomocą Amazon Linux:
Linux ip-xx-xx-xx-xxx 3.14.44-32.39.amzn1.x86_64 # 1 SMP czw. 11 czerwca 20:33:38 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux
Dane wyjściowe tego polecenia:
date +"%Y-%m-%d %H:%M:%S" --date="2015-07-27 00:11:22"
27.07.2015 00:11:22
Dane wyjściowe tego polecenia:
date +"%Y-%m-%d %H:%M:%S" --date="2015-07-27 00:11:22 + 00:05"
27.07.2015 00:06:22
Dane wyjściowe tego polecenia:
date +"%Y-%m-%d %H:%M:%S" --date="2015-07-27 00:11:22 - 00:05"
27.07.2015 00:16:22
OMFG czy czas płynie wstecz? Lub problem z 8 warstwą?
Edycja : Mój Amazon Linux jest w UTC + 00: 00, a moja lokalna maszyna Ubuntu jest w UTC-05: 00. Te same polecenia w Ubuntu pokazują:
26.07.2015, 19:11:22
26.07.2015, 19:06:22
26.07.2015, 19:16:22
odpowiednio, więc + 00:05
nie wydaje się być strefą czasową.
+
/-
średniej strefie czasowej, więc--date="2015-07-27 00:11:22 + 00:05"
oznaczają datę wydruku 2015-07-27 00:11:22 w strefie czasowej, która jest 5 minut na zachód od UTC , tj. 5 minut wcześniej: 00:06:22.(())
(podwójnego nawiasu) w bash.Odpowiedzi:
Według źródła parsowania datetime.y gnulib wydaje się, że jest to funkcja związana z funkcją time_zone_hhmm .
Po pierwsze, nie możemy użyć twojego formatu, aby dodać sekundy
date +"%Y-%m-%d %H:%M:%S" --date="2015-07-27 00:11:22 - 00:05:01"
:, mam błąd analizy:Następnie, zgodnie z nagłówkiem funkcji time_zone_hhmm:
Wygląda na to, że modyfikujesz strefę czasową, która odpowiada zachowaniu odwróconego czasu dodawania / usuwania.
Jeśli chcesz wykonać artmetykę na czas, lepiej użyj znaczników czasu Epoki (data + '% s'), na których łatwiej jest wykonać obliczenia. Ponadto są oparte na czasie UTC, który nie uwzględnia lokalnej strefy czasowej serwera, nad którym pracujesz.
Znacznik czasu zwróci zatem ten sam wynik dla USA, Azji lub Europy. Następnie używasz tego znacznika czasu do wyświetlania czasu czytelnego dla człowieka, co uwzględnia strefę czasową.
W każdym razie niezły chwyt. Bez tej fajnej sztuczki nigdy nie wykopałbym źródła gnulib!
źródło