jQuery日期/时间选择器


245

我一直在寻找一个可以处理日期和时间的不错的jQuery插件。核心用户界面DatePicker很棒,但不幸的是,我还需要花些时间。

我发现有一些可以使DatePicker与时俱进的技巧,但是它们看起来都不太雅致,Google并没有发现任何不错的东西。

是否有一个不错的jQuery插件,可以在具有可用界面的单个UI控件中选择日期和时间?


我敢肯定,我的示例将减少混乱并提高用户友好性。两者都有优点和缺点。
迈克尔·斯通

Answers:


251

到目前为止,最好,最简单的DateTime选择器选项是http://trentrichardson.com/examples/timepicker/

它是jQuery UI Datepicker的扩展,因此它将支持相同的主题,并且以几乎相同的方式工作,具有相似的语法,等等。应与jQuery UI imo打包在一起。


3
我一直在用这个,我很喜欢。
桑尼2010年

3
我喜欢这个,但还是很容易出错。
Alastair Pitts 2010年

11
“越野车”?几乎不。我在生产代码中使用它,并且有一段时间了。它也在积极开发中。
桑尼

7
@Sonny:是否在生产中使用它与是否有越野车无关。您可能只是没有看到过它的错误,因为您没有用它来暴露它们的东西,而Alastair就是这样。另一方面,他没有提供任何证据来证明他的主张,因此我不倾向于太当真……
iconoclast

18
这个插件最大的问题是用户界面:为什么我要使用滑块(水平滑块)来输入时间!?它对我来说看起来和感觉都很尴尬。我有很多次使用滑条的经验,但无法获得想要的数字(反复进行一点然后再进行一次),最后我键入了。通常,键盘是输入精确数值的最简单方法。如果要使用视觉输入法,则时钟是时间的常规时钟,而不是滑块。难以实现,但实际上可能有用(只要也可以使用键盘输入)。
iconoclast

46

@David,感谢您的推荐!@fluid_chelsea,我刚刚发布了Any + Time(TM)版本3.x,该版本使用jQuery而不是Prototype并具有经过大量改进的界面,所以我希望它现在可以满足您的需求:

http://www.ama3.com/anytime/

如有任何问题,请通过我网站上的评论链接让我知道!


6
Any + Time(TM)4.x版现已上市!新版本支持TIME ZONES(在其他选择器中找到该功能!)以及jQuery选择器/链接,轻松删除(避免内存泄漏!)和许多其他改进。请搭便车,如果您有任何问题或建议,请通过我网站上的评论页面告诉我。
Andrew M. Andrews III

4
Any + Time看起来非常漂亮。我喜欢。
扎克·彼得森

只需几分钟即可在Rails应用程序上实施。完美运作。
Gwyn Morfey

我只是选择了AnyTime选择器作为我的JSF应用程序的选择器!感谢您提供的优质产品,请继续努力!
Arg

对于每个Any + Time输入,Any + Time都会为UI附加一个新的隐藏div(与重新使用隐藏div UI的jQUery UI datepicker不同),这会导致在设计不良的MSIE6中性能大大降低。因此,如果您需要支持MSIE6,请不要使用Any + Time!
Eduardo

14

我认为,日期和时间应作为两个单独的输入框进行处理,以使其对于用户输入而言最为有用和高效。让用户一次输入一件事是一个很好的原则,恕我直言。

我使用核心UI DatePicker和以下时间选择器。

这是受Google日历使用的一种启发:

jQuery timePicker
示例: github上的http://labs.perifer.se/timedatepicker/
项目:https : //github.com/perifer/timePicker

我发现它是所有替代方案中最好的。用户可以输入快速,外观简洁,简单,并且允许用户输入精确到分钟的特定时间。

PS:在我看来:滑块(由一些其他的时间选择器使用)需要太多的单击,并且要求用户提供鼠标精度(这会使输入速度变慢)。


核心UI DatePicker:jqueryui.com/demos/datepicker
Magne

这扼杀了C#MVC在该领域的模型绑定优势
Serj Sagan 2013年

13

我对日期选择器的最佳体验是使用基于原型的AnyTime。我知道那不是jQuery,但仍然值得您妥协。我绝对不知道任何原型,并且仍然很容易使用。

我发现的一个警告:在某些浏览器中它不向前兼容。也就是说,它不适用于Chrome上较新版本的原型。


1
如果我可以使用原型,那么这将不是问题,不幸的是,我们在此应用程序中使用了jQuery。
切尔西,

7
只是更新-AnyTime 3现在可用于jQuery。
Jaxidian

我已经好几个月没想到了。但是我的个人项目需要一些更新,而我正准备投入一些jQuery。我以为我要替换日期选择器,因为我不需要Any + Time的所有功能,并且以为我也可以全部使用jQuery。和ba!我碰到这个。很棒的时机。
David Berger 2010年

很好,尽管年份选择器(单击<或>)对我来说很麻烦。
一个编码器

7

只是为了在此处添加信息,The Fluid Project有一个不错的Wiki文章,概述了此处的大量日期和/或时间选择器。


4

我最近对此进行了研究,但还没有找到一个像样的日期选择器,其中还包括一个像样的时间选择器。我最终使用的是eyecon很棒的DatePicker,其中有两个简单的时间下拉列表。我很想使用Timepickr.js,看起来像是一种非常不错的方法。


3

我遇到了同样的问题。我实际上是使用服务器端编程开发的,但是我进行了快速搜索以尝试帮助您并发现了这一点。

似乎还不错,没有过多地查看源代码,但似乎纯粹是JavaScript。

看一下:

http://www.rainforestnet.com/datetimepicker/datetimepicker.htm

这是演示页面链接:

http://www.rainforestnet.com/datetimepicker/datetimepicker-demo.htm

祝好运


我已经使用了几年了。牙齿有点长,但是可以用。
一个编码器

1

这是我用来让用户选择一个datetimepicker,设置datetime并让另一个datetimepicker向该时间添加一分钟的一些代码。

我需要此用于自定义药物控制。

无论如何,以为这可能对别人有帮助,因为我在网上找不到答案...

(至少不是一个完整的答案)

请记住,添加的60000将增加一分钟。(60 * 1000毫秒)

$('.frdtPicker').datetimepicker({
        onClose: function(dateText, inst) {
            var endDateTextBox = $('.todtPicker');
            if (endDateTextBox.val() != '') {
                var testStartDate = new Date(dateText);
                var testEndDate = new Date(endDateTextBox.val());
                if (testStartDate > testEndDate) {

                    var testStartDate = new Date(dateText).getTime() + 60000;
                    var testStartDate2 = new Date(testStartDate); 

                    endDateTextBox.datetimepicker('setDate', (new Date(testStartDate2)));
                }
            }
            else {
                var testStartDate = new Date(dateText).getTime() + 60000;
                var testStartDate2 = new Date(testStartDate);
                endDateTextBox.datetimepicker('setDate', (new Date(testStartDate2)));
            }
            $('.frdtPicker').val(dateText); //endDateTextBox.val());

        },
        onSelect: function(selectedDateTime) {
            var start = $(this).datetimepicker('getDate');
            $('.todtPicker').datetimepicker('option', 'minDate', new Date(start.getTime()));
        }
    });


1

不是jQuery,但是它可以很好地配合带有时间的日历:JavaScript日期时间选择器

我只是绑定了click事件以将其弹出:

$(".arrival-date").click(function() {
    NewCssCal($(this).attr('id'), 'mmddyyyy', 'dropdown', true, 12);
});

1
更新了链接-他们移动了链接。
bigspotteddog 2012年

尽管已经以不同的方式调用了它(因此无法从您的代码中识别出来),但我已经使用了几年。我一直在迁移到jquery的DatePicker,因为雨林的牙齿看起来有点长。
一个编码器

0

我做一个这样的功能:

function getTime()
{
    var date_obj = new Date();
    var date_obj_hours = date_obj.getHours();
    var date_obj_mins = date_obj.getMinutes();
    var date_obj_second = date_obj.getSeconds();

    var date_obj_time = "'"+date_obj_hours+":"+date_obj_mins+":"+date_obj_second+"'";
    return date_obj_time;
}

然后,我像这样使用jQuery UI datepicker:

$("#selector").datepicker( "option", "dateFormat", "yy-mm-dd "+getTime()+"" );

所以,我得到的价值是这样的:2010-10-31 12:41:57


有时我们需要确定时间(不使用getTime函数)
bungdito 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.