views:

844

answers:

2

I'm using the jquery datepicker plugin to set a date field that is stored as an epoch timestamp in the db (the field, publish_time, maps directly to the table schema).

It seems that Datepicker only supports epoch in milliseconds, and not seconds. Its aggravating that it supports milli & nano seconds, but not seconds.

Are there any quick workarounds?

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

References:
jQuery Datepicker - http://jqueryui.com/demos/datepicker/#option-defaultDate
jQuery Support Date Formats - http://docs.jquery.com/UI/Datepicker/formatDate

Edit: Below is a quick dirty solution...

$('[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);
    }
});
+2  A: 

Use the millisecond representation and parseInt to get an integer value. Then you can multiply with 1000 to get the seconds. This just requires a little processing instead of taking the value of the datepicker directly.

kgiannakakis
I'll have to do that as a last resort option. I'd need to write a custom callback, which I'm not against doing but I'm hoping there is an expression I can use in dateFormat (eg, '(@/1000)')
John Himmelman
+2  A: 

I'm typing this as an answer and not a comment so it doesn't get missed: I caution strongly against using the raw timestamp from your client as a value to stuff into your database unless you're really sure that that's what you want to do. Your clients may be in different time zones than your servers (in fact, in general there's roughly a 96% chance they are :-) so when they pick "April 2" it may or may not end up as "April 2" in your database.

Sometimes of course you want the client time, but in my experience that's not too common.

Pointy