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

这就是我试图做到的。我想应该很简单。

DateToday-ClientDOB = ClientAge

这是我的代码:

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,为什么ClientAge字段将不会填充。任何答复将是有帮助的。谢谢。

最佳答案

这是从网络之外的某个地方获取的。不记得在哪里。但是,我已经以多种形式使用了它,并且效果很好。这个想法是,日期之间的时间差以毫秒为单位,给定日期是过去固定日期之后的秒数。一旦您知道日期之间的秒数差(在本例中为目前的DOB),就可以计算出这是多少年。请注意,我的格式是英国日期格式(dd / mm / yy)。如果您使用美国格式(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;

07-25 23:07