我试图根据两个日期来确定年龄:出生日期和访问日期。每次我尝试以下列方式使用getFullYear();
时:我收到错误
var b = getField("dob").value;
var c = b.getFullYear();
我在控制台中收到此错误。
b.getFullYear is not a function
2:Console:ExecException in line 2 of function top_level, script Console:Exec
TypeError: b.getFullYear is not a function
2:Console:Exec
undefined
我做错了什么?我已经尝试了各种方法来完成这项工作,唯一能做的就是使用substring()
来获取日期的最后4位数。
日期格式为mm \ dd \ yyyy。
谢谢!
答案 0 :(得分:1)
尝试var b = new Date(getField("dob").value);
答案 1 :(得分:1)
你在评论中说过
dob字段是一个格式为dd / mm / yyyy的文本字段,这就是你所要求的
...你已经标记了你的问题acrobat
,所以我猜这是在PDF中运行的JavaScript,而不是在网络浏览器中运行。
在浏览器上,如果您尝试解析dd/mm/yyyy
形式的字符串(例如03/05/2014
),则无论浏览器的位置如何(美国,英国,西班牙语,俄语,日语),浏览器将首先尝试将其读作mm/dd/yyyy
(美国格式,月 - 日 - 年)。这没有在任何地方指定(当然不是在JavaScript规范中),但是对于我曾尝试过的每个浏览器都是如此。
如果 Acrobat做同样的事情,并且您将文本字段格式化为dd/mm/yyyy
,那么您将遇到麻烦 - 是03/05/2014
5月3日或3月5日?在您使用的格式中,它是5月3日,但是在美国格式中它是3月5日。
除非您想在多个位置测试Acrobat(或者可以找到一个参考,承诺它将如何解析该字符串),否则您需要自己解析它。
如果你只想结束这一年,这很简单:
var match = getField("dob").value.match(/(\d{4})\s*$/);
var year = match ? match[1] : undefined;
那将是一个字符串。如果你想把它变成一个数字,你可以稍微改变第二行:
var year = match ? +match[1] : undefined;
(+
将match[1]
(我们知道所有数字)转换为数字。)
如果您想要完整的日期,那么SO上有几个答案可以演示如何使用明确定义的格式解析日期。
答案 2 :(得分:0)
您可以检查b的类型是否为日期 对于Eg:
var b = getField("dob").value;
if(Object.prototype.toString.call(b) === '[object Date]')
{
var c = b.getFullYear();
}
else{
alert("Not valid date");}