【问题标题】:calculate age javascript in adobe acrobat在 adobe acrobat 中计算年龄 javascript
【发布时间】:2012-09-08 04:22:24
【问题描述】:

我在获取要填充到交互式 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 字段。任何回复都会有所帮助。谢谢。

【问题讨论】:

  • 由于您几乎没有代码显示:很难真正分析它。如果它没有输出,则表明该值未设置或未正确设置。变量的值除了输出还能查看吗?
  • 这里是你需要完成的纯 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 位年份替换 YYMM 带有月份 减 1DD 带有日期。
  • 非常感谢您回复我。对此,我真的非常感激。您看到“几乎没有代码”的原因是因为这几乎不需要任何代码。我正在尝试做的是从交互式表单中的 2 个字段进行简单计算。我有 2 个日期:DateToday 和 ClientDOB。我试图减去这两个字段以获得年龄(ClientAge)。 DateToday 字段在打开文档并选择 ClientDOB 字段时填充。选择 ClientDOB 后,应根据 (DateToday-ClientDOB) 填充 ClientAge 字段。
  • 我对基于 adobe 的 JS 及其库一无所知,所以看看你的代码:它可能完全错误,我不知道。由于 ClientAge 不会填充:尝试将 ClientAge 直接设置为任何内容。如果这不起作用:您的语法错误。如果它确实有效:您的 Date2Num 函数可能是错误的。
  • 非常感谢您的回复!我从没想过 Adob​​e 可能有不同的库。我想我们都知道假设的作用......我必须调查一下,看看是否可能是这种情况。再次感谢您的帮助。

标签: javascript forms pdf adobe


【解决方案1】:

这是从网上某处拍摄的。不记得在哪里。但是,我以多种形式使用了它,并且效果很好。这个想法是日期之间的差异以毫秒为单位,给定日期是过去固定日期的秒数。一旦你知道日期之间的秒数差异(在这种情况下是 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2014-11-16
    • 2017-05-26
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    相关资源
    最近更新 更多