使用方法时给出错误年份的日历

时间:2019-02-24 18:13:31

标签: java string calendar datetime-format localdate

我必须找出测试者类中表中的出生年龄。这意味着我必须将现在的当前日期设为所选的某个日期。此外,我将该方法放在主类中。错误是,对于所有插入的变量,我一直得到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;
}

2 个答案:

答案 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)将为您提供一个由pi连接而成的字符串吗?也不是。该文档说:

      

    以第二个参数指定的基数返回第一个参数的字符串表示形式。

似乎可以帮助您阅读String类中的方法如何工作。

此外,您尝试根据月,日和年的差异构建新的LocalDate。相反,您应该仅从字符串中的月,日和年开始构建一个,然后再查找该日期与今天之间的经过时间(就像您已经在做的那样)。

尼古拉斯·克(Nicholas K)的答案是正确解决问题的方法。

链接