date
Komenda nie oferuje takiej rzeczy, która jest trochę smutne, ponieważ RFC-3339 to nowoczesny, powszechne, normalny format używany wszędzie (z wyjątkiem wiadomości e-mail, który nie jest ani nowoczesny, ani zdrowy).
Moje przesunięcie strefy czasowej wynosi obecnie -08: 00, więc najprostszą formą tego polecenia powinno być wydrukowanie aktualnego czasu jako 2013-09-05T14:58:33.102-08:00
.
2013-09-05 14:58:33.102 -0800
chyba że istnieje jakiś powód, dla którego spacje wcale nie powinny być używane.Odpowiedzi:
Wydaje się, że można zrobić kilka formatów za pomocą przełącznika w celu realizacji GNU
date
(w wersji 5.90 lub nowszej)--rfc3339=
.Przykłady
Jeśli chcesz
T
to dodać, jako hack:Jeśli chcesz to w milisekundach:
Bibliografia
źródło
--iso-8601' option accepts the same arguments as
--Rfc-3339` i obejmuje „T” w swojej produkcji.s/\(\....\).*-/\1-/g
powinna byćs/\(\....\).*\([+-]\)/\1\2/g
praca na wschód od Atlantyku.NOTE: ISO 8601 defines date and time separated by "T".
Podczas gdy RFC3339 pozwala zamiast tego użyć spacji. Przeczytaj ietf.org/rfc/rfc3339.txt Sekcja 5.6Z GNU
date
(5.90 lub wyżej):Wymień
%N
się%3N
do milisekund,%6N
dla mikro sekund ...AFAIK, żadna ze specyfikacji POSIX, Unix ani LSB nie określa żadnego polecenia, które może wyświetlać czasy z dokładnością poniżej sekundy, ale część ułamkowa jest opcjonalna w RFC 3339.
Strftime POSIX / Unix / LSB obsługuje
%z
wyświetlanie przesunięcia TZ jako-0800
, więc najbardziej przenośny, który prawdopodobnie otrzymasz:źródło
GNU
date
ma wbudowany format ISO-8601 - czy to nie jest dość bliskie lub nawet identyczne z RFC-3339?źródło
Co powiesz na dobry stary:
źródło
0200
brakuje dwukropka, co może uszkodzić niektóre systemy, które tego wymagają.time-numoffset
na tools.ietf.org/html/rfc3339#section-5.6 .Możesz także łatwiej sformatować czas zgodnie z RFC3339 (ISO8601) :
UWAGA: Ten format jest także używany w konwencji schematu etykiet RC RC 1.0
źródło
-u
flagą ta odpowiedź jest poprawna, prawda?Te polecenia są zgodne z POSIX, z wyjątkiem
%z
specyfikacji konwersji. Jest jednak%z
szeroko obsługiwany i działa w ten sam sposób w systemach Linux, MacOS, FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, Solaris, Minix i Haiku. Działa również z narzędziami w Busybox, Toybox i sbase (podstawowe narzędzia systemowe suckless.org). Ponieważ%z
generuje przesunięcie strefy czasowej w±HHMM
formacie, potrzebujemysed
potoku, aby dodać dwukropek i zmienić go na±HH:MM
.UWAGA: Projekt Heirloom
date
ma niekompatybilne%z
dane wyjściowe: nie drukuje+
znaku.źródło