我必须找出测试者类中表中的出生年龄。这意味着我必须将现在的当前日期设为所选的某个日期。此外,我将该方法放在主类中。错误是,对于所有插入的变量,我一直得到2018。从我的代码(此处未全部显示)中,第一个变量应为58,而不是2018。
这是代码。
public static int ageMeth(String dob) {
dob.split("/");
int years = 0;
String tempDate = "";
boolean month = true;
if (month) {
// gets the month converts
int x = Integer.parseInt(dob.valueOf(0));
int y = Integer.parseInt(dob.valueOf(1));
String xy = Integer.toString(x, y);
int xyNum = Integer.parseInt(xy);
LocalDateTime date = LocalDateTime.now();
tempDate = date.toString();
int p = Integer.parseInt(tempDate.valueOf(5));
int i = Integer.parseInt(tempDate.valueOf(6));
String pi = Integer.toString(p, i);
int piNum = Integer.parseInt(pi);
// the days
int x2 = Integer.parseInt(dob.valueOf(2));
int y2 = Integer.parseInt(dob.valueOf(3));
String xy2 = Integer.toString(x2, y2);
int xyNum2 = Integer.parseInt(xy2);
int p2 = Integer.parseInt(tempDate.valueOf(8));
int i2 = Integer.parseInt(tempDate.valueOf(9));
String pi2 = Integer.toString(p2, i2);
int piNum2 = Integer.parseInt(pi2);
// the year
int x3 = Integer.parseInt(dob.valueOf(4));
int y3 = Integer.parseInt(dob.valueOf(5));
int xx3 = Integer.parseInt(dob.valueOf(6));
int yy3 = Integer.parseInt(dob.valueOf(7));
String xy3 = Integer.toString(x3, y3);
String xxyy3 = Integer.toString(xx3, yy3);
int xyNum3 = Integer.parseInt(xy2);
int xxyyNum3 = Integer.parseInt(xxyy3);
int p3 = Integer.parseInt(tempDate.valueOf(8));
int i3 = Integer.parseInt(tempDate.valueOf(9));
String pi3 = Integer.toString(p3, i3);
int piNum3 = Integer.parseInt(pi3);
// the main variables
int newMonth = piNum - xyNum;
int newDay = piNum2 - xyNum2;
int newYear = piNum3 - (xyNum3 + xxyyNum3);
LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(newYear, newMonth, newDay);
Period per = Period.between(birthday, today);
years = per.getYears();
}
return years;
}
答案 0 :(得分:2)
要根据传入的async resolve() {
const results = await new Promise((resolve, reject) => {
// ^^^^^
let sql = singleLineString`
select distinct t.bookid,t.bookname,t.country
from books_tbl t
where t.ship_status = 'Not Shipped'
`;
pool.query(sql, (err, results) => {
if(err) reject(err);
else resolve(results);
});
});
const fetches = [];
for (let p = 0; p < results.length; p++){
const book_id = results[p].bookid;
const query = `mutation updateShipping {
updateShipping(id: ${book_id}, input:{
status: "Shipped"
}) { bookid
bookname }
}`;
fetches.push(await apolloFetch({ query }));
// ^^^^^
}
return fetches;
}
查找年龄,您可以使用:
dob
答案 1 :(得分:0)
似乎您受到一些错误的印象?
Integer.parseInt(someString.valueOf(someIndex))
将为您提供int
中索引someIndex
上的数字的someString
吗?不是这样打开您可以在IDE(或编译器)中显示的警告。它将告诉您“应该以静态方式访问String类型的静态方法valueOf(int)”。这意味着valueOf
不是所讨论的字符串的方法,而是String
类的方法(这就是“静态”的含义)。因此,您从中获得的结果将与字符串无关。 Integer.toString(p, i)
将为您提供一个由p
和i
连接而成的字符串吗?也不是。该文档说:
以第二个参数指定的基数返回第一个参数的字符串表示形式。
似乎可以帮助您阅读String
类中的方法如何工作。
此外,您尝试根据月,日和年的差异构建新的LocalDate
。相反,您应该仅从字符串中的月,日和年开始构建一个,然后再查找该日期与今天之间的经过时间(就像您已经在做的那样)。
尼古拉斯·克(Nicholas K)的答案是正确解决问题的方法。
链接