Em uma primeira postagem de blog sobre conversões na Fundação SAP Gateway, discutimos sua relevância no contexto das diferenças entre o sistema de tipos ABAP e o sistema de tipos OData. Embora não diretamente relacionado às conversões, o manuseio de datas e horários se encaixa perfeitamente nesse tópico.
O ABAP conhece datas, horários e diferentes representações de carimbos de tempo. E, fornece funções de reutilização para executar cálculos de datas e horários. O OData possui suas próprias definições de datas e horários com funções que podem ser usadas em expressões
$filter
, por exemplo.
Muitas vezes, surgem perguntas sobre como as diferentes representações se mapeiam e como um provedor de dados precisa ser implementado para criar uma melhor correspondência entre ambos os mundos. Certamente não é possível mergulhar em todos os detalhes. Mas, vamos começar com alguns aspectos.
Data e Hora no OData
Para representar informações de data e hora, a especificação do OData na versão 2.0 conhece os três tipos primitivos
-
Edm.DateTime,
-
Edm.Time e
-
Edm.DateTimeOffset.
Como isso não é realmente suficiente para aplicações comerciais, a especificação da versão 4.0 muda para
-
Edm.Date,
-
Edm.TimeOfDay,
-
Edm.DateTimeOffset e
-
Edm.Duration.
Nos concentramos na especificação da versão 2.0 e restringimos a discussão a Edm.DateTime e Edm.DateTimeOffset. Detalhes sobre as representações podem ser encontrados na
especificação do OData
, no
padrão ISO 8601
e em
http://www.w3.org/TR/xmlschema-2
. Aqui, listamos rapidamente os diferentes formatos. Os literais são usados na URI, ou seja, em
$filter
, por exemplo. ATOM e JSON se referem ao tipo de conteúdo da carga da solicitação ou resposta. O número de casas decimais disponíveis para sub-segundos é definido pela faceta de precisão.
Edm.DateTime representa uma data e uma hora em
UTC
(anteriormente, Hora Média de Greenwich):
|
|
Representação
|
Exemplo
|
|
Literal
|
datetime'yyyy-mm-ddThh:mm[:ss[.fffffff]]'
|
datetime'2016-07-08T12:34:56'
|
|
ATOM
|
yyyy-mm-ddThh:mm[:ss[.fffffff]]
|
2016-07-08T12:34:56
|
|
JSON
|
"\/Date(<ticks>)\/"<ticks> = número de milissegundos desde a meia-noite de 1º de janeiro de 1970
|
"\/Date(1467981296000)\/"
|
Os ticks na representação JSON também podem ser negativos para descrever datas e horários anteriores a 1º de janeiro de 1970. "\/Date(-6847804800000)\/" é meia-noite de 1º de janeiro de 1753, por exemplo.
Edm.DateTimeOffset adiciona informações de fuso horário em relação ao UTC. As informações de data e hora são complementadas pela diferença padrão de tempo (offset) com o sinal
v
: +01:00 para Horário da Europa Central (CET) ou -05:00 para Horário Padrão do Leste (EST), por exemplo.
|
|
Representação
|
Exemplo
|
|
Literal
|
datetimeoffset'yyyy-mm-ddThh:mm:ss[.fffffff]Z|vii:nn'
|
datetimeoffset'1970-01-01T00:00:01+01:00'
|
|
ATOM
|
yyyy-mm-ddThh:mm:ss[.fffffff]Z|vii:nn
|
1970-01-01T00:00:01+01:00
|
Pedro Pascal
Se unió el 07/03/2018
Facebook
Pinterest
Telegram
Linkedin
Whatsapp
No hay respuestas para mostrar
Se el primero en responder
PARA MÁS INFORMACIÓN
INGRESA TUS DATOS
(+51) 1641 9379
(+57) 1489 6964
© 2026 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute
Hola ¿Puedo ayudarte?