用javascript/jquery显示时差
我正在使用日期选择器选择日期,我想计算所选日期之间的差异,然后提醒差异。我无法看到代码工作 HTML日期选择器用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 结果是开始日期和结束日期之间的毫秒数。在我的项目中,我使用此函
<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');
}
}