用javascript/jquery显示时差

用javascript/jquery显示时差,javascript,jquery,datepicker,Javascript,Jquery,Datepicker,我正在使用日期选择器选择日期,我想计算所选日期之间的差异,然后提醒差异。我无法看到代码工作 HTML日期选择器 <input type="date" size="8" name="advDurFrom" /> <input type="date" size="8" name="advDurTo"/> Html: 或者看看JSFIDLE 结果是开始日期和结束日期之间的毫秒数。Html: 或者看看JSFIDLE 结果是开始日期和结束日期之间的毫秒数。在我的项目中,我使用此函

我正在使用日期选择器选择日期,我想计算所选日期之间的差异,然后提醒差异。我无法看到代码工作

HTML日期选择器

<input type="date" size="8" name="advDurFrom" />
<input type="date" size="8" name="advDurTo"/>
Html:

或者看看JSFIDLE

结果是开始日期和结束日期之间的毫秒数。

Html:

或者看看JSFIDLE


结果是开始日期和结束日期之间的毫秒数。

在我的项目中,我使用此函数计算两个日期之间的差值,我为您修改了一些

HTML:


差价天数:
JS:

功能日历日(开始日期、结束日期){
如果(结束日期<开始日期)
返回0;
//计算日期之间的天数
var millissecondsPerday=86400*1000;//以毫秒为单位的天
startDate.setHours(0,0,0,1);//午夜后开始
endDate.setHours(23,59,59999);//在午夜前结束
var diff=endDate-startDate;//日期时间对象之间的毫秒数
变量天数=数学整数(差/毫秒/日);
返程天数;
}
函数common_getDateFromUI(str){
var arr=str.split(“/”);
var returnDate=新日期(arr[2],arr[1]-1,arr[0],0,0,0);
返回日期;
}
$().ready(函数()){
$('input[name=“advDurFrom”],input[name=“advDurTo”]”)。日期选择器({
showOn:“两者”,
日期格式:“日/月/年”,
变化月:对,
变化年:是的,
buttonImageOnly:正确,
onSelect:function(dateText,inst){
var day1=common_getdatefromuui($('input[name=“advDurFrom”]).val();
var day2=common_getDateFromUI($('input[name=“advDurTo”]).val();
$(“.diff”).html(日历日(第1天、第2天));
}
});
});

在我的项目中,我使用此函数计算两个日期之间的差值,我为您修改了一些

HTML:


差价天数:
JS:

功能日历日(开始日期、结束日期){
如果(结束日期<开始日期)
返回0;
//计算日期之间的天数
var millissecondsPerday=86400*1000;//以毫秒为单位的天
startDate.setHours(0,0,0,1);//午夜后开始
endDate.setHours(23,59,59999);//在午夜前结束
var diff=endDate-startDate;//日期时间对象之间的毫秒数
变量天数=数学整数(差/毫秒/日);
返程天数;
}
函数common_getDateFromUI(str){
var arr=str.split(“/”);
var returnDate=新日期(arr[2],arr[1]-1,arr[0],0,0,0);
返回日期;
}
$().ready(函数()){
$('input[name=“advDurFrom”],input[name=“advDurTo”]”)。日期选择器({
showOn:“两者”,
日期格式:“日/月/年”,
变化月:对,
变化年:是的,
buttonImageOnly:正确,
onSelect:function(dateText,inst){
var day1=common_getdatefromuui($('input[name=“advDurFrom”]).val();
var day2=common_getDateFromUI($('input[name=“advDurTo”]).val();
$(“.diff”).html(日历日(第1天、第2天));
}
});
});

我认为您需要全局声明变量。试试这个代码。这对我来说非常有效

var date1 = "";
var date2 = "";

$('#advDurFrom').click(function () {
    var x = $(this).val();
    date1 = new Date(x);
});
$('#advDurTo').click(function () {
    var y = $(this).val();
    date2 = new Date(y);
});
$('#advDurTo').focusout(function () {
    var diffDays = date2.getTime() - date1.getTime();
    alert(diffDays);
});
并将HTML更改为

 <input type="date" size="8" id="advDurFrom" />
 <input type="date" size="8" id="advDurTo" />

我认为您需要全局声明变量。试试这个代码。这对我来说非常有效

var date1 = "";
var date2 = "";

$('#advDurFrom').click(function () {
    var x = $(this).val();
    date1 = new Date(x);
});
$('#advDurTo').click(function () {
    var y = $(this).val();
    date2 = new Date(y);
});
$('#advDurTo').focusout(function () {
    var diffDays = date2.getTime() - date1.getTime();
    alert(diffDays);
});
并将HTML更改为

 <input type="date" size="8" id="advDurFrom" />
 <input type="date" size="8" id="advDurTo" />

getTime返回毫秒,您只需转换为正确的单位。这里有一个天差的例子。另外,请使用“模糊事件不单击”,否则在用户实际输入值之前,您将分配该值

var isOK = false;
var isOK2 = false;
$('input[name=advDurFrom]').blur(function () {
    var x = $('input[name=advDurFrom]').val();
    try {
        date1 = new Date(x);
        isOK = !isNaN(date1);
    } catch (e) {
        isOK = false;
    }
    printDiff();
});
$('input[name=advDurTo]').blur(function () {
    var y = $('input[name=advDurTo]').val();
    try {
        date2 = new Date(y);
        isOK2 = !isNaN(date2);
    } catch (e) {
        isOK2 = false;
    }
    printDiff();
});

function printDiff(){
    if (isOK && isOK2) {
        var one_day = 1000 * 60 * 60 * 24;
        var diff = Math.ceil((date2.getTime() - date1.getTime()) / (one_day));
        console.log(diff + ' days');
    }
}

getTime返回毫秒,您只需转换为正确的单位即可。这里有一个天差的例子。另外,请使用“模糊事件不单击”,否则在用户实际输入值之前,您将分配该值

var isOK = false;
var isOK2 = false;
$('input[name=advDurFrom]').blur(function () {
    var x = $('input[name=advDurFrom]').val();
    try {
        date1 = new Date(x);
        isOK = !isNaN(date1);
    } catch (e) {
        isOK = false;
    }
    printDiff();
});
$('input[name=advDurTo]').blur(function () {
    var y = $('input[name=advDurTo]').val();
    try {
        date2 = new Date(y);
        isOK2 = !isNaN(date2);
    } catch (e) {
        isOK2 = false;
    }
    printDiff();
});

function printDiff(){
    if (isOK && isOK2) {
        var one_day = 1000 * 60 * 60 * 24;
        var diff = Math.ceil((date2.getTime() - date1.getTime()) / (one_day));
        console.log(diff + ' days');
    }
}


它为unoothing提供的是什么,代码不起作用
getTime
返回毫秒。你的日期格式是什么?用blur()替换focusout()。另外,通过删除变量将date1和date2变为全局变量。例如,将“var date1”改为“date1”…@elclanrs,其2013年5月5日为unoothing,代码不起作用
getTime
返回毫秒。你的日期格式是什么?用blur()替换focusout()。另外,通过删除变量,将date1和date2设为全局变量。例如,将“var date1”改为“date1”…@elclanrs,其2013年5月5日不会发出任何警报now@user210068请现在试试我犯了一个错误,我忘了用blur()替换focusout()。现在它看起来很完美,试试看它不会提醒任何东西now@user210068请现在试一试如果我犯了错误,我忘了用blur()替换focusout()。现在它看起来很完美,试试看it@user210068哦,我发现了,在设置值之前,您可以使用单击事件来检索该值。只要在任何地方使用模糊,只要确认它不存在就可以了NaN@user210068哦,我发现了,在设置值之前,您可以使用单击事件来检索该值。只要在任何地方使用模糊,只要验证它不是NaN就可以了
var date1 = "";
var date2 = "";

$('#advDurFrom').click(function () {
    var x = $(this).val();
    date1 = new Date(x);
});
$('#advDurTo').click(function () {
    var y = $(this).val();
    date2 = new Date(y);
});
$('#advDurTo').focusout(function () {
    var diffDays = date2.getTime() - date1.getTime();
    alert(diffDays);
});
 <input type="date" size="8" id="advDurFrom" />
 <input type="date" size="8" id="advDurTo" />
var isOK = false;
var isOK2 = false;
$('input[name=advDurFrom]').blur(function () {
    var x = $('input[name=advDurFrom]').val();
    try {
        date1 = new Date(x);
        isOK = !isNaN(date1);
    } catch (e) {
        isOK = false;
    }
    printDiff();
});
$('input[name=advDurTo]').blur(function () {
    var y = $('input[name=advDurTo]').val();
    try {
        date2 = new Date(y);
        isOK2 = !isNaN(date2);
    } catch (e) {
        isOK2 = false;
    }
    printDiff();
});

function printDiff(){
    if (isOK && isOK2) {
        var one_day = 1000 * 60 * 60 * 24;
        var diff = Math.ceil((date2.getTime() - date1.getTime()) / (one_day));
        console.log(diff + ' days');
    }
}