2012-09-15 120 views
1

我在填写交互式PDF表单时遇到了一些困难。我正在使用JavaScript来计算客户端的当前时间,从2日期字段(DateToday和ClientDOB)已经在窗体中,我需要它填充一个“ClientAge”字段。 DateToday字段会在表单打开时自动填充。我希望在用户选择ClientDOB后填充ClientAge字段。在Adobe Acrobat中计算年龄javascript

这就是我想要的。应该是简单的我会想。

DateToday - ClientDOB =委托关系

这里是我的代码:

var DateToday_ = Date2Num(DateToday.formattedValue, "MM/DD/YYYY") 
var ClientDOB_ = Date2Num(ClientDOB.formattedValue, "MM/DD/YYYY") 
var diff = DateToday_ - ClientDOB_ 
ClientAge.value = Floor(diff/365.25) 

我不知道一旦ClientDOB已经选定,为什么会不填充委托关系领域。任何答复都会有帮助。谢谢。

+0

由于您几乎没有代码显示:很难真正分析它。如果不是输出,则表明该值未设置或设置不正确。除了输出变量之外,您还可以查看变量的值吗? – Rhyono

+0

下面是你需要完成的纯JS。 'now = new Date()。getTime(); bday = new Date(YY,MM,DD).getTime(); diff = Math.floor((now-bday)/1000/60/60/24/365.25);' 用2或4位数字年代替'YY'。 'MM'与月份**减1 **和'DD'​​与当天。 – Rhyono

+0

非常感谢您回复我。对此,我真的非常感激。你看到“几乎没有代码”的原因是因为这不应该几乎没有任何代码。我想要做的是以交互式的形式从2个字段进行简单的计算。我有2个日期:DateToday和ClientDOB。我试图扣除这两个领域的年龄(ClientAge)。 DateToday字段填充文档何时打开并且ClientDOB字段被选中。一旦选择了ClientDOB,ClientAge字段就应该基于(DateToday-ClientDOB)来填充。 – Bassler1988

回答

0

这是从'net'以外的地方拍摄的。可以'记住在哪里。不过,我已经在很多形式中使用了它,它工作正常。这个想法是,日期之间的差异以毫秒为单位,给定的日期是过去某个固定日期的秒数。一旦你在日期(在这种情况下为DOB到现在)之间有秒差值,你可以计算出多少年。请注意,我的格式采用英式日期格式(日/月/年)。如果以美式格式(mm/dd/yy)运行,则必须进行适当的更改。

// get current date THIS NON AMERCAN DATE FORMAT 
var oNow = new Date(); 
// get date from 'Demo.DOB' field 
var oMyDate = util.scand('dd/mm/yy', this.getField('Demo.DOB').value); 
// define second in milliseconds 
var nSec = 1000; 
// define minute in milliseconds 
var nMin = 60 * nSec; 
// define hour in milliseconds 
var nHr = 60 * nMin; 
// define day in milliseconds 
var nDay = 24 * nHr; 
// compute today as number of days from epoch date 
var nNowDays = Number(oNow)/nDay; 
// truncate to whole days 
nNowDays = Math.floor(nNowDays); 
// compute inputted date days from epoch data 
var nMyDateDays = Number(oMyDate)/nDay; 
// truncate to whole days 
nMyDateDays = Math.floor(nMyDateDays); 
// compute difference in the number of days 
var nDiffDays = nNowDays - nMyDateDays; 
// adjust difference for counting starting day as 1 
++nDiffDays; 
// convert days to years 
var nYears = nDiffDays/365.2525 
// truncate to whole years 
nYears = Math.floor(nYears); 
// set field value number of years (nYears) 
event.value = nYears;