2010-08-24 49 views
7

Estoy escribiendo una aplicación que expone una API REST. Algunos de los parámetros de consulta serán fecha/hora (precisos a segundos), y algunas de las respuestas serán marcas de tiempo (precisas a milisegundos).Formato de fecha recomendado para API REST

La implementación de API en el servidor está en Java. Las aplicaciones cliente pueden ser cualquier cosa: java, javascript, .NET. La API devuelve datos XML o JSON. Los datos de Fecha/Hora se almacenan en una base de datos Oracle.

¿Alguien tiene recomendaciones, basadas en el dolor anterior, de cuál es el mejor formato de formato para pasar estos valores de fecha/hora? Estoy pensando en utilizar una buena pasada de moda para almacenar la cantidad de milisegundos desde el 1 de enero de 1970 a las 00:00:00 GMT.

Editar El intervalo de fechas cubierta en el API es para los eventos en tiempo real, por lo que no habrá nada antes de 2010, y (ajuste a mí mismo como abuso aquí) nada después de 2038.

supongo que sería mejor determinado por

a) La amplia variedad de idiomas admite la conversión de este objeto en una fecha interna larga, sin tener que escribir código para hacerlo.

b) más baja sobrecarga de la CPU (en aplicación servidor)

Respuesta

8

ISO 8601 todo el camino

El uso de cualquier método basado en época significa que están obligados a la gama (en la mayoría de los sistemas) de un firmado 32- bit INT (1901-12-13T20: 45: 52 + 00: 00 a 2038-01-19T03: 14: 07 + 00: 00) que, en realidad, es más un timestamp que una fecha, ya que no puede manejar fechas históricas o futuras de largo alcance.

+0

Hola Peter: He editado la pregunta para aclarar el rango de fechas que estaré consultando, cómodo dentro del 'rango de época' - ¿cambiaría esto tu recomendación para ISO 8601? – Kevin

+3

Y2.038K ¡aquí vamos! –

+0

@Tom Lo sé, lo estoy esperando –