以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  js脚本日期差值  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=99875)

--  作者:fubblyc
--  发布时间:2017/4/28 14:51:00
--  js脚本日期差值
js代码:
获取服务器时间:
function calc(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new window.XMLHttpRequest();
}else{
xhr = new ActiveObject("Microsoft")
}

xhr.open("GET","/",false)
xhr.send(null);
var time = xhr.getResponseHeader("Date");
var curDate = new Date(time);

实际时间.value = curDate.getFullYear()+"-"+(curDate.getMonth()+1)+"-"+curDate.getDate();   //得到的数据:2017-4-28
}

差异.value = 预计日期.value - 实际时间      //这段是不对的,日期差值。找了网上很多资料,一直没找到方法。 
}


图片点击可在新窗口打开查看此主题相关图片如下:微信截图
_20170428145015.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/4/28 14:51:51编辑过]

--  作者:有点色
--  发布时间:2017/4/28 15:00:00
--  

 写个函数来用

 

function getDays(strDateStart,strDateEnd){
   var strSeparator = "-"; //日期分隔符
   var oDate1;
   var oDate2;
   var iDays;
   oDate1= strDateStart.split(strSeparator);
   oDate2= strDateEnd.split(strSeparator);
   var strDateS = new Date(oDate1[0], oDate1[1]-1, oDate1[2]);
   var strDateE = new Date(oDate2[0], oDate2[1]-1, oDate2[2]);
   iDays = parseInt(Math.abs(strDateS - strDateE ) / 1000 / 60 / 60 /24)//把相差的毫秒数转换为天数
   return iDays ;
}

 

这样调用

var i = getDays("2012-12-01","2012-12-25");

alert(i);


--  作者:fubblyc
--  发布时间:2017/4/28 15:14:00
--  
哦,是写函数啊。。。我还一直以为是脚本。我试试。。。



[此贴子已经被作者于2017/4/28 15:17:28编辑过]

--  作者:fubblyc
--  发布时间:2017/4/28 15:21:00
--  
老师,  i 要怎么调用呢。。。
FT 里的代码:
      With  .AddInput("实际完成时间","完成时间","text")
             .Attribute = "on change=\'getDays()\'"
      End With


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20170428151320.png
图片点击可在新窗口打开查看

var i = getDays(实际完成时间.value,计划完成日期.value);
差异.value = i

[此贴子已经被作者于2017/4/28 15:27:48编辑过]

--  作者:有点色
--  发布时间:2017/4/28 15:26:00
--  

 

var i = getDays(document.getElementById("实际完成时间").value, document.getElementById("计划完成时间").value);

alert(i);


--  作者:fubblyc
--  发布时间:2017/4/28 15:32:00
--  
function getDays(strDateStart,strDateEnd){
   var strSeparator = "-"; //日期分隔符
   var oDate1;
   var oDate2;
   var iDays;
   oDate1= strDateStart.split(strSeparator);
   oDate2= strDateEnd.split(strSeparator);
   var strDateS = new Date(oDate1[0], oDate1[1]-1, oDate1[2]);
   var strDateE = new Date(oDate2[0], oDate2[1]-1, oDate2[2]);
   iDays = parseInt(Math.abs(strDateS - strDateE ) / 1000 / 60 / 60 /24)//把相差的毫秒数转换为天数
   return iDays ;
var i = getDays(document.getElementById("实际完成时间").value, document.getElementById("计划完成日期").value);
document.getElementById("差异").value = i    这两句要写在}里面吗?不知道要怎么调用
}
[此贴子已经被作者于2017/4/28 15:32:25编辑过]

--  作者:有点色
--  发布时间:2017/4/28 15:58:00
--  

1、2楼的函数照抄写到你的js文件去;

 

2、你原来的处理函数calc里面,调用代码

 

var i = getDays(document.getElementById("实际完成时间").value, document.getElementById("计划完成日期").value);
document.getElementById("差异").value = i


--  作者:fubblyc
--  发布时间:2017/4/28 16:17:00
--  
这样吗?实际完成时间有显示,差异就没有反应
js代码:
function getDays(strDateStart,strDateEnd){
   var strSeparator = "-"; //日期分隔符
   var oDate1;
   var oDate2;
   var iDays;
   oDate1= strDateStart.split(strSeparator);
   oDate2= strDateEnd.split(strSeparator);
   var strDateS = new Date(oDate1[0], oDate1[1]-1, oDate1[2]);
   var strDateE = new Date(oDate2[0], oDate2[1]-1, oDate2[2]);
   iDays = parseInt(Math.abs(strDateS - strDateE ) / 1000 / 60 / 60 /24)//把相差的毫秒数转换为天数
   return iDays ;
}

function calc(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new window.XMLHttpRequest();
}else{
xhr = new ActiveObject("Microsoft")
}

xhr.open("GET","/",false)
xhr.send(null);
var time = xhr.getResponseHeader("Date");
var curDate = new Date(time);

实际完成时间.value = curDate.getFullYear()+"-"+(curDate.getMonth()+1)+"-"+curDate.getDate();
var i = getDays(document.getElementById("实际完成时间").value, document.getElementById("计划完成日期").value);
document.getElementById("差异").value = i
}

FT代码:
    With wb.AddInputGroup("form1","ipg1","完成情况")
      With  .AddSwitch("是否完成","是否完成")
              .Attribute = "on change=\'calc()\'"
     End With

--  作者:有点色
--  发布时间:2017/4/28 16:28:00
--  

 弹出值看看,应该是你id的值写错了。

 

实际完成时间.value = curDate.getFullYear()+"-"+(curDate.getMonth()+1)+"-"+curDate.getDate();
alert(document.getElementById("实际完成时间").value);
alert(document.getElementById("计划完成日期").value);

var i = getDays(document.getElementById("实际完成时间").value, document.getElementById("计划完成日期").value);
document.getElementById("差异").value = i


--  作者:fubblyc
--  发布时间:2017/4/28 16:37:00
--  
可以了,谢谢谢谢!!!!!!