2010-02-23 26 views
6

Estoy usando el plugin jquery datepicker para establecer un campo de fecha que está almacenado como una marca de tiempo epoch en el db (el campo, publish_time , se asigna directamente al esquema de la tabla).jQuery Datepicker - ¿Cómo puedo formatear la fecha como una marca de tiempo epoch (en segundos NO milisegundos)

Parece que Datepicker solo admite epoch en milisegundos, y no en segundos. Su agravante es que admite mili & nano segundos, pero no segundos.

¿Hay soluciones rápidas?

// Setup datepicker 
$('[name=datepicker-publish_time]').datepicker({ 
    dateFormat : 'mm-dd-yy', 
    altField : '[name=publish_time]', 
    altFormat : '@' 
}); 

Referencias:
jQuery datepicker - http://jqueryui.com/demos/datepicker/#option-defaultDate
jQuery Soporte formatos de fecha - http://docs.jquery.com/UI/Datepicker/formatDate

Editar: A continuación se muestra una solución rápida sucia ...

$('[name=datepicker-publish_time]').datepicker({ 
    dateFormat : 'mm-dd-yy', 
    onSelect : function(dateText, inst) 
    { 
     var epoch = $.datepicker.formatDate('@', $(this).datepicker('getDate'))/1000; 

     $('[name=publish_time]').val(epoch); 
    } 
}); 
+1

Tuve exactamente el mismo problema ... gracias por publicar su solución. +1 – mpen

Respuesta

2

uso y la representación de milisegundos parseInt para obtener un valor entero. Entonces puedes multiplicar con 1000 para obtener los segundos. Esto solo requiere un poco de procesamiento en lugar de tomar el valor del marcador de fecha directamente.

+0

Tendré que hacer eso como una opción de último recurso. Tendría que escribir una devolución de llamada personalizada, que no estoy en contra de hacer, pero espero que haya una expresión que pueda usar en dateFormat (por ejemplo, '(@/1000)') –

6

Estoy escribiendo esto como una respuesta y no un comentario para que no se pierda: advierto firmemente en contra del uso de la marca de tiempo cruda de su cliente como un valor para rellenar en su base de datos a menos que esté realmente seguro eso es lo que quieres hacer. Sus clientes pueden estar en diferentes zonas horarias que sus servidores (de hecho, en general hay aproximadamente un 96% de posibilidades de que sean :-) por lo que cuando seleccionan "2 de abril" puede terminar o no como "2 de abril" en su base de datos.

A veces por supuesto que quiere el tiempo del cliente, pero en mi experiencia eso no es demasiado común.

+0

Tuve un problema similar al del OP en que tenía que comparar las fechas registradas por el usuario con un datepicker contra la hora actual del servidor ... en lugar de guardar el valor de milisegundos devuelto por tadepicker, ya que también quería grabar una cadena de fecha (DD d mm yy) entonces usé jquery ajax para enviar esa cadena a un script php que lo representaba como un servidor de la marca de tiempo de Unix y le devolví ese –

Cuestiones relacionadas