A date
parancs nem kínál ilyet, ami nagyon szomorú, mivel az RFC-3339 az modern, széles körben elterjedt, józan formátum, amelyet mindenhol használnak (kivéve az e-mailben, amely sem nem modern, sem épelméjű).
Az időzóna-eltolásom jelenleg -08: 00, ezért a parancs legegyszerűbb formája az aktuális időt 2013-09-05T14:58:33.102-08:00
.
Megjegyzések
Válasz
Úgy tűnik, hogy többféle formátumot is megtehet a date
(5.90-es vagy újabb verzió), --rfc3339=
.
Példák
$ date --rfc-3339=date 2014-03-19 $ date --rfc-3339=seconds 2014-03-19 18:00:05-04:00 $ date --rfc-3339=ns 2014-03-19 18:00:08.179780629-04:00
Ha azt akarja, hogy a T
fájlt hozzáadják, feltörésként:
$ date --rfc-3339=seconds | sed "s/ /T/" 2014-03-19T18:35:03-04:00
Ha ezredmásodpercekben szeretné megadni :
$ date --rfc-3339=ns | sed "s/ /T/; s/\(\....\).*\([+-]\)/\1\2/g" 2014-03-19T18:42:52.362-04:00
Hivatkozások
Megjegyzések
- Manapság nincs szükség feltörésre a ‘ T ‘. A
--iso-8601' option accepts the same arguments as
–rfc-3339`, és tartalmazza a ‘ T ‘ kimenet. - A
s/\(\....\).*-/\1-/g
részs/\(\....\).*\([+-]\)/\1\2/g
legyen, hogy az Atlanti-óceántól keletre is működjön. - @svante – köszönöm a részleteket, javítva.
- @Eonil, ami valójában nem helyes, az RFC3339 kijelenti:
NOTE: ISO 8601 defines date and time separated by "T".
Míg az RFC3339 lehetővé teszi egy hely helyett. Olvassa el az ietf.org/rfc/rfc3339.txt 5.6 szakasz - @ rwenz3l Az én hibám. Csak az ABNF részét olvastam, és hiányoztak a jegyzetek. Köszönjük, hogy rámutattál!
Válasz
GNU-val date
(5.90 vagy újabb):
$ TZ=America/Anchorage date "+%FT%T.%N%:z" 2014-03-19T14:29:31.041119357-08:00
Cserélje le az %N
szót a %3N
ezredmásodpercekig, %6N
mikro-másodpercig …
AFAIK, a POSIX, a Unix vagy az LSB egyik specifikációja sem határoz meg olyan parancsot, amely az a másodlagos részletesség, de a töredékrész opcionális az RFC 3339-ben.
A POSIX / Unix / LSB strftime támogatja a %z
-t, hogy a TZ eltolást -0800
, tehát a leginkább hordozható, amelyet valószínűleg kapni fog:
$ TZ=America/Anchorage perl -MPOSIX -le "$t = strftime "%Y-%m-%dT%T%z", localtime; $t =~ s/..$/:$&/; print $t" 2014-03-19T14:30:23-08:00
Válasz
Az időt az RFC3339 (ISO8601) szerint is könnyebben formázhatja:
$ date -u +"%Y-%m-%dT%H:%M:%SZ" 2016-11-08T08:52:55Z
MEGJEGYZÉS: Ez az űrlap az at a Label Schema Convention RC 1.0
megjegyzések
- fájlban is használatos Ez ‘ nem érvényes RFC3339. Eran ‘ “dátum +% Y-% m-% dT% T% z” válasza helyes és kevesebb karaktert tartalmaz. Ha az UTC pass -u jelölőnégyzetet szeretné megadni, akkor ez nullázza az időzóna eltolását.
- A
-u
jelölővel ez a válasz helyes, igaz? - @briceburg miért nem érvényes ez az RFC3339? A tools.ietf.org/html/rfc3339#section-5.6 szerint úgy tűnik, hogy helyes, amennyire meg tudom mondani.
Válasz
A GNU date
beépített ISO-8601 formátummal rendelkezik – nem meglehetősen közeli, vagy akár azonos az RFC-3339-hez?
1065 % date --iso-8601=seconds 2014-03-19T16:51:16-0600
Megjegyzések
- Az ISO-8601 különböző a dátumok és időpontok formázása, de úgy gondolom, hogy az OP kifejezetten a W3C Dátum formátumot kéri ” Teljes dátum plusz óra, perc, másodperc és egy másodperc tizedes tört ÉÉÉÉ-HH-NNTóó: pp: ss.sTZD (pl. 1997-07-16T19: 20: 30.45 + 01: 00) ” – W3C dátum- és időformátum .
Válasz
Mit szólnál a jó öreghez:
$ date +%Y-%m-%dT%T%z 2015-10-29T14:47:06+0200
Megjegyzések
- Hol vannak az időzónára vonatkozó információk?
- Ez Mac és Linux rendszereken egyaránt működik ‘ date ‘
- Mit szólnál ezredmásodpercekhez?
- rövid megjegyzés itt, az RFC megnyitása nélkül, az időzóna szegmensből
0200
hiányzik egy kettőspont, ami megszakíthat néhány, ehhez szükséges rendszert. - @MikeMackintosh ‘ jegyzet releváns; az itt bemutatott kimenet nem törvényes RFC 3339 dátum. Az időzóna szegmensben a kettőspont szükséges az RFC 3339-hez; lásd a
time-numoffset
definíciót itt: tools.ietf.org/html/rfc3339#section-5.6 .
Válasz
echo "Local date only:" date "+%Y-%m-%d" echo echo "Local date and time:" date "+%Y-%m-%dT%H:%M:%S%z" | sed "s@^.\{22\}@&:@" echo echo "UTC date and time:" date -u "+%Y-%m-%dT%H:%M:%SZ"
Ezek a parancsok POSIX-kompatibilisek, kivéve a %z
konverziós specifikáció. A %z
azonban széles körben támogatott, és ugyanúgy működik Linux, MacOS, FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, Solaris, Minix és Haiku esetén. Működik a Busybox, a Toybox és az sbase (a suckless.org alaprendszer segédprogramjai) eszközeivel is. Mivel %z
az időzóna-eltolást ±HHMM
formátumban adja ki, a sed
cső hozzáadására van szükség kettőspontot, és állítsa át ±HH:MM
-re.
MEGJEGYZÉS: A “s date
Heirloom projekt inkompatibilis %z
kimenet: nem nyomtat +
jelet.
2013-09-05 14:58:33.102 -0800
, kivéve, ha s valamilyen ok, amiért egyáltalán nem szabad szóközt használni.