6

我正在使用 jquery datepicker 插件来设置一个日期字段,该字段存储为数据库中的纪元时间戳(该字段,publish_time,直接映射到表模式)。

似乎 Datepicker 只支持以毫秒为单位的纪元,而不是秒。更糟糕的是它支持毫秒和纳秒,但不支持秒。

有什么快速的解决方法吗?

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

参考:
jQuery Datepicker - http://jqueryui.com/demos/datepicker/#option-defaultDate
jQuery 支持日期格式 - http://docs.jquery.com/UI/Datepicker/formatDate

编辑:下面是一个快速肮脏的解决方案......

$('[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);
    }
});
4

2 回答 2

6

我正在输入这个作为答案而不是评论,所以它不会被遗漏:我强烈警告不要使用来自客户端的原始时间戳作为填充到数据库中的值,除非你真的确定那是你想要的去做。您的客户可能与您的服务器位于不同的时区(事实上,一般来说,他们有大约 96% 的机会 :-) 所以当他们选择“4 月 2 日”时,它可能会或可能不会以“4 月 2 日”结束数据库。

有时您当然想要客户时间,但根据我的经验,这并不常见。

于 2010-02-23T20:25:53.263 回答
2

使用毫秒表示和 parseInt 获取整数值。然后你可以乘以 1000 得到秒数。这只需要一点处理,而不是直接获取日期选择器的值。

于 2010-02-23T20:23:35.653 回答