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

标签 java string calendar datetime-format localdate

我必须找出测试人员类(class)中表格中的出生日期的年龄。这意味着我必须获取当前日期到所选特定日期的日期。而且,我将该方法放在主类中。错误是我一直为插入的所有变量获取 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;
}

最佳答案

要根据传入的 dob 查找年龄,您可以使用:

public static int ageMeth(String dob) {
    return Period.between(LocalDate.parse(dob, DateTimeFormatter.ofPattern("MM/dd/yyyy")), 
                          LocalDate.now()).getYears();
}

关于java - 使用方法时日历给出错误的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54854964/

相关文章:

java - 如何捕获 parseInt 抛出的 NumberFormatException

java - 将代码写入 : start an R session, 运行 R 脚本,终止 session ,重复

java - 如何使用 "departure_time"作为参数通过距离矩阵 api 将 future 时间传递到 HTTP 请求中

Java从字符串中删除公钥页眉和页脚

R:如何显示一串单词的前n个字符

swift - Swift 3.2 中 cellForItemAt 日期的 JTAppleCalendar 自定义单元错误

php - 由于位数不同,sql 表中的时间查询不正确

java - 如何设置 PieChart 中的字体大小?

c++ - 用于匹配 C++ 字符串常量的正则表达式

java - Google Calendar Api - 将日期时间转换为日历对象