Kommandot date erbjuder inte sådant, vilket är lite tråkigt eftersom RFC-3339 är modernt, utbrett, förnuftigt format som används överallt (utom i e-post som varken är modernt eller förnuftigt). 
 Min tidszonsförskjutning är för närvarande -08: 00 så den enklaste formen av detta kommando bör skriva ut aktuell tid som 2013-09-05T14:58:33.102-08:00. 
Kommentarer
Svar
 Det verkar som om du kan göra flera format med växeln till GNU-implementeringen av date (version 5.90 eller senare), --rfc3339=. 
Exempel
$ 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 
 Om du vill att T ska läggas till, som ett hack: 
$ date --rfc-3339=seconds | sed "s/ /T/" 2014-03-19T18:35:03-04:00 
Om du vill ha det på millisekunder :
$ date --rfc-3339=ns | sed "s/ /T/; s/\(\....\).*\([+-]\)/\1\2/g" 2014-03-19T18:42:52.362-04:00 
Referenser
Kommentarer
-  Dessa dagar behövs inget hack för att få ' T '. 
--iso-8601' option accepts the same arguments as–rfc-3339` och innehåller ' T ' output. -  Sed del 
s/\(\....\).*-/\1-/gbör varas/\(\....\).*\([+-]\)/\1\2/gför att också arbeta öster om Atlanten. - @svante – tack för detaljerna, fixade.
 -  @Eonil som faktiskt inte är korrekt säger RFC3339: 
NOTE: ISO 8601 defines date and time separated by "T".Medan RFC3339 låter dig använda en utrymme istället. Läs ietf.org/rfc/rfc3339.txt Avsnitt 5.6 - @ rwenz3l Mitt fel. Jag läste bara ABNF-delen och saknade anteckningarna. Tack för att ni påpekade det!
 
Svar
 Med GNU date (5.90 eller högre): 
$ TZ=America/Anchorage date "+%FT%T.%N%:z" 2014-03-19T14:29:31.041119357-08:00 
 Ersätt %N med %3N för millisekunder, %6N i mikrosekunder … 
AFAIK, ingen av POSIX-, Unix- eller LSB-specifikationerna anger något kommando som kan visa gånger med sub-sekunders granularitet, men bråkdelen är valfri i RFC 3339.
 POSIX / Unix / LSB strftime stöder %z för att visa TZ-offset som -0800, så den mest bärbara du förmodligen kommer att få är: 
 $ 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 
Svar
Du kan också formatera tiden enligt RFC3339 (ISO8601) enklare:
 $ date -u +"%Y-%m-%dT%H:%M:%SZ" 2016-11-08T08:52:55Z  
OBS: Det här formuläret at används också i Label Schema Convention RC 1.0
Kommentarer
- Att ' inte är en giltig RFC3339. Eran ' s svar på ” datum +% Y-% m-% dT% T% z är korrekt och färre tecken. Om du vill ha UTC-pass -u-flaggan, vilket kommer att nollställa tidszonsförskjutningen.
 -  Med 
-u-flaggan är svaret korrekt, eller hur? - @briceburg varför är detta inte giltigt RFC3339? Enligt tools.ietf.org/html/rfc3339#section-5.6 verkar det vara så vitt jag kan säga.
 
Svar
 GNU date har ISO-8601-format inbyggt – är inte det ganska nära eller till och med identiskt med RFC-3339? 
1065 % date --iso-8601=seconds 2014-03-19T16:51:16-0600 
Kommentarer
- ISO-8601 tillåter olika formatting av datum och tider, men jag tror att OP frågar specifikt för W3C Date format " Komplett datum plus timmar, minuter, sekunder och en decimalfraktion av en sekund ÅÅÅÅ-MM-DDThh: mm: ss.sTZD (t.ex. 1997-07-16T19: 20: 30.45 + 01: 00) " – W3C datum- och tidsformat .
 
Svar
Vad sägs om gamla gamla:
$ date +%Y-%m-%dT%T%z 2015-10-29T14:47:06+0200 
Kommentarer
- Var är tidszoninformationen?
 - Detta fungerar både på mac och linux ' date '
 - Vad sägs om millisekunder?
 -  snabb anteckning här, utan att öppna RFC, tidszonsegmentet, 
0200saknas ett kolon, vilket kan bryta vissa system som kräver det. -  @MikeMackintosh ' s anteckning är relevant; produktionen som visas här är  inte  ett lagligt RFC 3339-datum. Kolon i tidszonsegmentet krävs för RFC 3339; se definitionen av 
time-numoffsetvid tools.ietf.org/html/rfc3339#section-5.6 . 
Svar
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" 
 Dessa kommandon är POSIX-kompatibla, med undantag i konverteringsspecifikationen %z. %z stöds dock allmänt och fungerar på samma sätt i Linux, MacOS, FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, Solaris, Minix och Haiku. Det fungerar också med verktygen i Busybox, Toybox och sbase (suckless.org bas systemverktyg). Eftersom %z matar ut tidszonsförskjutningen i ±HHMM -format behöver vi sed -röret för att lägga till en kolon och ändra den till ±HH:MM. 
 OBS: kommandot Heirloom-projektet ”s date är inkompatibelt %z -utgång: det skriver inte ut ett + -tecken. 
2013-09-05 14:58:33.102 -0800utom när det finns Det är en anledning till varför utrymmen inte får användas alls.