jQuery UI datepicker to epoch



以下列格式yyyy-dd-mm(在日期选择器设置中为yy-dd-mm)获取日期选择器日期并将其转换为使用Javascript的历元时间的最佳方法是什么?

我试着这样做:

var aDate = $("#date").val().split('-');
var epoch = new Date(aDate[0] + "," + aDate[1] + "," + aDate[2]).getTime() / 1000;

一个console.log(epoch)返回为NaN

但是如果我声明epoch为new Date(2011,10,30).getTime() / 1000;,那么就没有问题了。我猜问题是我在传递一个字符串,但我不知道如何解决它,因为我是新的Javascript。

编辑:我知道关于altDatealtFormat设置的日期选择器。但我想知道不使用这些设置如何做到这一点。因为我将不得不做我上面描述的日期+时间之后。

尝试将日期构造函数更改为:

var epoch = new Date(aDate[0], aDate[1] - 1, aDate[2]).getTime() / 1000;

我们已经删除了字符串连接,所以它应该正确读取日期。月份表示为aDate[1] - 1,因为JavaScript中的月份数是从零开始的(1月= 0,12月= 11),所以需要从月份数中减去1。

您可以在这里找到一个工作示例:http://jsfiddle.net/Qpg24/67/

jQuery UI datepicker的altDatealtFormat参数将自动为您完成此操作。

查看示例中的"填充替代字段"示例。

jQuery UI datepicker有一个'getDate'方法,它以字符串形式返回日期:

Sun Apr 28 2013 13:30:00 GMT+1000 (EST)

您可以使用Date对象的'getTime'方法将此字符串转换为自epoch以来的毫秒数。使用您的示例代码,这看起来像:

var epoch = new Date( $("#date").datepicker( "getDate" ) ).getTime();

这也适用于jQuery datetimepicker (http://trentrichardson.com/examples/timepicker/)

dateFormat:"@",

$("#input").datepicker({
    dateFormat: '@',
    maxDate : 0,
    onSelect: function() {
        var input = $(this).datepicker('getDate');
        console.log('%c input = ' + input, "color: green;");
    }
});

最新更新