我正在使用以下javascript:http://xdsoft.net/jqplugins/datetimepicker,我希望实现简单的效果 - 当用户选择今天的时候,它应该只显示他从现在开始直到当天结束的时间,前一次应该被禁用。但是当他将来选择任何其他日子时 - 那么整个时间都应该可用。还有一件事 - 我想一直使用美国时区,所以我通过php从服务器上获取它。后来我使用moment.js来解析它,然后我将它包含在datetimepicker中。我在JS中编写了以下函数:
$(document).ready(function () {
var today;
var time = 1443571620;
var newyorktime = time - 5*60*60;
today = new Date(newyorktime*1000);
var dd = today.getDate();
var mm = today.getMonth();
var yy = today.getFullYear();
var hh = today.getHours();
var now = new Date(newyorktime*1000);
now.setHours(now.getHours());
var isPM = now.getHours() >= 12;
var isMidday = now.getHours() == 12;
var result = document.querySelector('#result');
var time = [now.getHours() - (isPM && !isMidday ? 12 : 0),
now.getMinutes()].join(':') +
(isPM ? ' pm' : 'am');
alert(now);
var logic = function (currentDateTime) {
var currentDateTimestamp = moment(currentDateTime).unix()-5*60*60;
currentDateTime = new Date(currentDateTimestamp*1000);
if (currentDateTime.getDate() == dd && currentDateTime.getFullYear() == yy && ((currentDateTime.getMonth()) == mm)) {
alert(now);
this.setOptions({
formatTime: 'g:i A',
format: 'd/m/Y h:i A',
minDate: '1970/01/02', //or 1986/12/08,
minTime: time
});
} else
this.setOptions({
formatTime: 'g:i A',
format: 'd/m/Y h:i A',
minDate: '+1970/01/02', //or 1986/12/08,
minTime: '0:00 AM'
});
};
$('#datetimepicker').val(dd+"/"+(mm+1)+"/"+yy+" "+time);
jQuery('#datetimepicker').datetimepicker({
onChangeDateTime: logic,
onShow: logic
});
}
);
目前它不能很好地工作 - 即使我们输入if (currentDateTime.getDate() == dd && currentDateTime.getFullYear() == yy && ((currentDateTime.getMonth()) == mm)) {
if语句 - 我也无法以某种方式阻止前几个小时。我怎样才能做到这一点?
总的来说 - 让我们说它是9月30日上午11点。当用户点击datetimepicker时,他应该看到从9月30日上午11点开始的所有日期/时间(之前的日期/小时应该显示为灰色)。但是当他选择接下来的几天时 - 那么应该启用所有时间,他应该有可能选择它们。目前它不起作用。 请帮忙..
这是我的小提琴:http://jsfiddle.net/b8o5cvdz/8/