El date
comando no ofrece tal cosa, lo cual es un poco triste ya que RFC-3339 es el formato moderno, generalizado y sensato utilizado en todas partes (excepto en el correo electrónico que no es ni moderno ni sensato).
Mi desplazamiento de zona horaria es actualmente -08: 00, por lo que la forma más simple de este comando debería imprimir la hora actual como 2013-09-05T14:58:33.102-08:00
.
2013-09-05 14:58:33.102 -0800
excepto cuando hay alguna razón por la cual no se deben usar espacios en absoluto.Respuestas:
Parece que se puede hacer varios formatos usando el interruptor en la implementación GNU de
date
(versión 5.90 o superior),--rfc3339=
.Ejemplos
Si desea
T
que se agregue, como un truco:Si lo quieres en milisegundos:
Referencias
fuente
--iso-8601' option accepts the same arguments as
--rfc-3339`, e incluye la 'T' en su salida.s/\(\....\).*-/\1-/g
debería sers/\(\....\).*\([+-]\)/\1\2/g
trabajar también al este del Atlántico.NOTE: ISO 8601 defines date and time separated by "T".
Mientras que RFC3339 le permite usar un espacio en su lugar. Lea ietf.org/rfc/rfc3339.txt Sección 5.6Con GNU
date
(5.90 o superior):Reemplazar
%N
con%3N
de milisegundos,%6N
para micro-segundos ...AFAIK, ninguna de las especificaciones POSIX, Unix o LSB especifican ningún comando que pueda mostrar tiempos con granularidad inferior a un segundo, pero la parte fraccional es opcional en RFC 3339.
POSIX / Unix / LSB strftime admite
%z
mostrar el desplazamiento TZ como-0800
, por lo que el más portátil que probablemente obtendrá es:fuente
GNU
date
tiene incorporado el formato ISO-8601, ¿no está tan cerca o incluso es idéntico a RFC-3339?fuente
¿Qué tal un buen viejo:
fuente
0200
le faltan dos puntos, lo que puede romper algunos sistemas que lo requieren.time-numoffset
en tools.ietf.org/html/rfc3339#section-5.6 .También puede formatear el tiempo de acuerdo con RFC3339 (ISO8601) más fácilmente:
NOTA: Este formato también se usa en Label Schema Convention RC 1.0
fuente
-u
bandera esta respuesta es correcta, ¿verdad?Estos comandos son compatibles con POSIX, con la excepción de la
%z
especificación de conversión. Sin embargo,%z
es ampliamente compatible y funciona de la misma manera en Linux, MacOS, FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, Solaris, Minix y Haiku. También funciona con las herramientas en Busybox, Toybox y sbase (las utilidades del sistema base suckless.org). Ya que%z
salidas, la zona horaria se compensa en±HHMM
formato, necesitamos lased
tubería para agregar dos puntos y cambiarlo a±HH:MM
.NOTA: El
date
comando del proyecto Heirloom tiene una%z
salida incompatible : no imprime un+
signo.fuente