2011-04-26 38 views
5

Tengo un poco de extrañeza que acabo de descubrir dentro de mi implementación de fullCalendar.JQuery fullCalendar: problema con la fecha/evento: ¡se está retrasando una hora!

Básicamente, tengo una fecha dentro de la base de datos "28/04/2011 09:00:00" (dmy), que convierto en una marca de tiempo Unix, que da como resultado 1303981200.0.

He comprobado con http://www.onlineconversion.com/unix_time.htm, y la marca de tiempo es válida.

Sin embargo, cuando paso este JSON a fullCalendar, ¡el evento se presenta una hora después!

El JSON es:

[{"id":"4a315750666d2f70675241544936762b632f514f51513d3d","title":"Blah blah blah","description":"","start":1303981200,"end":1303983000,"className":"A-16","allDay":false}] 

desconcertado

Gracias.

Respuesta

4

Oye amit_g, también encontré esto usando las marcas de tiempo generadas por php. El problema se debe a que una marca de tiempo no contiene "literalmente" una zona horaria, por lo que cuando se convierte mediante javascript con Fecha() por FC, se utiliza su zona horaria local.

Lo resolví simplemente usando el formato de fecha completo de ISO 8601 en lugar de una marca de tiempo al suministrar eventos a FC.

$startTimestamp = 1303776000; //2011-04-26 at 12am 
$startISO = date('c', $startTimestamp); 
echo $startISO; //Outputs 2011-04-26T00:00:00+00:00 

El suministro de FC con sólo $ startTimestamp como el inicio de eventos muestra el evento de acuerdo a mi zona horaria (-4 EST en el momento debido al horario de verano), ya que la marca de tiempo es de 12 a.m., javascript Fecha() resta 4 horas, por lo tanto, mostrar mi evento un día completo antes de FC. Usar la fecha ISO ahora muestra todos mis eventos en el momento correcto. ¡Espero que esto ayude a alguien más!

+0

¡Gracias @ user725755, esto funcionó bien! Camino a seguir. Gracias. – Oxonhammer

+1

Para C# use algo como este DateTime.Now.ToString ("o") – Mike

1

Es probable que esta discrepancia se debe a la hora horario de verano. El código de Fullcalendar probablemente se está configurando a la hora del cliente actual; es posible que deba ajustar las diferencias de zona horaria y de horario de verano. Consulte Timezones Gotchas en FullCalendar documentation. No es demasiado útil, pero puede indicarle la dirección correcta.

+0

Gracias. Me indicó la dirección exacta que requería. –

+0

Estaba tratando de proporcionar los detalles del evento a través de Asp.net Webforms, y la conversión de DateTime.ToLocalDate() hizo el truco para mí. –

Cuestiones relacionadas