La guía o código que hallarás en este post es la resolución más fácil y válida que encontramos a tu duda o problema.
Solución:
as.POSIXlt
(y as.POSIXct
) son para entrada. Utilizar cualquiera format
o strftime
para la salida. Consulte ?strftime para obtener detalles sobre las cadenas de formato:
tm <- as.POSIXlt(Sys.time(), "UTC")
strftime(tm , "%Y-%m-%dT%H:%M:%S%z")
#[1] "2015-04-08T15:11:22+0000"
El tercer parámetro de as.POSIXlt
, format
se utiliza cuando el primer parámetro es un string-como valor que necesita ser analizado. Dado que estamos pasando un valor de fecha de Sys.time
la format
se ignora
No creo que los dos puntos en la salida de la zona horaria sean un requisito del formato ISO 8601, pero podría estar equivocado en ese punto. La página de ayuda dice que el estándar es POSIX 1003.1. Es posible que deba colocar los dos puntos con una sustitución de expresiones regulares si es necesario.
Después de mirar http://dotat.at/tmp/ISO_8601-2004_E.pdf, veo que no hay dos puntos en la representación de la zona horaria del formato "básico", pero hay uno en el "formato extendido".
El paquete parsedate
reconoce y analiza fechas en varios formatos, incluidos todos los formatos ISO 8601:
format_iso_8601(Sys.time())
# [1] "2017-09-01T10:59:22+00:00"
Aquí puedes ver las comentarios y valoraciones de los lectores
Recuerda dar visibilidad a este post si si solucionó tu problema.