API gráfica de Facebook: zona horaria del evento, hora

Actualmente tengo un problema para obtener la hora correcta de un evento a través de la API gráfica de Facebook. Hay algunos eventos que muestran la hora correcta y otros no. Incluso si estoy calculando mal la zona horaria, simplemente no tiene sentido para mí.

Por ejemplo, tengo los siguientes tres eventos: "Brunch", "Champions league finale" y "Pfingst-Tanz". Eso es lo que devuelve la API gráfica:

{
   "data": [
      {
         "name": "Pfingst-Tanz",
         "start_time": "2012-05-27T10:00:00",
         "end_time": "2012-05-27T14:00:00",
         "timezone": "Europe/Berlin",
         "location": "...",
         "id": "..."
      },
      {
         "name": "Championsleague Finale",
         "start_time": "2012-05-19T11:45:00",
         "end_time": "2012-05-19T14:45:00",
         "timezone": "Europe/Berlin",
         "location": "...",
         "id": "..."
      },
      {
         "name": "Muttertagsbrunch",
         "start_time": "2012-05-13T10:00:00",
         "end_time": "2012-05-13T14:00:00",
         "location": "...",
         "id": "..."
      }
   ],
   "paging": { … }
}

En la página de Facebook se muestra:

  • Pfingst-Tanz 19:00 (07:00 pm)
  • Final de la Champions League 20:45 (8:45 h)
  • Almuerzo 10:00 (10:00 am)

Lo que resulta en:

  • Pfingst-Tanz: página de Facebook correcta, API incorrecta o TZ incorrecta en mi aplicación
  • (final de la liga de campeones: no sé, no importa)
  • Brunch: página de Facebook y API correctas e iguales

Esto simplemente no se corresponde entre sí. Por lo que entiendo, tiene que estar todo mal o nada mal, pero no solo 1/3 o 2/3 eventos. ¿Alguien tiene una idea, o estoy demasiado ciego para ver algo?

preguntado el 22 de mayo de 12 a las 16:05

1 Respuestas

Su evento "Brunch" no incluye una zona horaria, por lo que no se puede ajustar a la zona horaria local del usuario, que es lo que supongo que está haciendo Facebook.

No me queda claro inmediatamente si el start_time y end_time Los valores están destinados a representar la locales horas de inicio/finalización (en la zona horaria dada) o las horas de inicio/finalización UTC, pero eso debería ser lo suficientemente fácil de resolver en función de los datos (y la documentación, con suerte). Sospecho que es el inicio/fin de UTC cuando hay una zona horaria especificada, pero el locales empezar/terminar de otra manera.

contestado el 22 de mayo de 12 a las 16:05

Ah, mira, no me di cuenta de eso. ¡Muchas gracias! Parece que solo es correcto si dejo de lado el TZ tanto en la aplicación como en la página de Facebook en este momento, porque no lo tengo en cuenta en mi aplicación. - arnekolja

Solo para asegurarnos de que todo esté dicho sobre este problema: si se proporciona una zona horaria al crear el evento en Facebook, Graph API recalculará la fecha/hora para reflejar la hora estándar del Pacífico (PST). No es una solución muy elegante por parte de FB, pero creo que tendrán que ceñirse a eso ahora. Un desarrollador que use Graph API tendrá que cargar el evento con PST en mente y luego volver a calcular agregando la diferencia de PST a su propia zona horaria. Pero tenga en cuenta que solo es así cuando se establece un tz. Cuando no se establece tz, no habrá recálculo para Graph API. - arnekolja

@arnekolja: ¿En serio, usa PST para todo? ¡Aargh! (Supongo que en realidad usa el Tiempo del Pacífico, ¿ya sea estándar o de día, según la época del año?) - jon skeet

Sí, también me froté los ojos. Vea la descripción de start_time aquí: desarrolladores.facebook.com/docs/reference/api/event - editar: PT, no sabía que hay horario de verano para la hora del Pacífico, lo siento :-) - arnekolja

@arnekolja: Guau. Eso es un poco de diseño de API realmente roto. ¡Bien hecho por rastrearlo! (Me interesa que "no se recomiende" especificar una zona horaria: algunos eventos están naturalmente en una zona horaria y otros no. No debería haber una recomendación de una forma u otra...) - jon skeet

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.