java - 如何从字符串中获取经过的年数

标签 java android date calendar

我有字符串日期“3.9.1991”。我想获得自该日期以来已经过去了多少年。例如 23. 我如何使用日历或日期来实现它?

编辑:

我一直在尝试这个:

    private String parseVkBirthday(String birthdayString) {

        // 3.9.1991
        SimpleDateFormat formatter = new SimpleDateFormat("d.M.yyyy");
        String formattedDate = null;
        Calendar date = Calendar.getInstance();

        int year = 0;

        try {
            Date currentDate = new Date();
            Date birthdayDate = formatter.parse(birthdayString);

            Log.d(LOG_TAG, "year1 = " + currentDate.getTime() + " year2 = " + birthdayDate.getTime());

            long diff = currentDate.getTime() - birthdayDate.getTime();

            birthdayDate.setTime(diff);

            date.setTime(birthdayDate);

            year = date.get(Calendar.YEAR);

        } catch (ParseException e) {
            e.printStackTrace();
        }

        return "" + year;
    }

但它返回给我的是 1993。

答案:

有3种方法可以解决这个问题:

1) 正如 codeaholicguy 回答的那样,我们可以使用 Joda-Time库(我更喜欢 Android 的)。

2) 正如 Basil Bourque 回答的那样,我们可以使用 ThreeTen-Backport使用 java 8 中的 java.time 类的库。

3) 我们可以使用 java 8 和 java.time 中的类。

谢谢大家。

最佳答案

使用SimpleDateFormatPeriodJoda-Time库,示例如下:

String pattern = "dd.MM.yyyy";
SimpleDateFormat format = new SimpleDateFormat(pattern);

Date date = format.parse("3.9.1991");
System.out.println(date);
Period period = new Period(date.getTime(), (new Date()).getTime());
System.out.println(period.getYears());

关于java - 如何从字符串中获取经过的年数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31314351/

上一篇:Java - 词频

下一篇:Java URL 构造函数错误

相关文章:

java - 字符串对象的内存分配?

java - 使用 Checkstyle 验证域对象获取/设置

java - 什么是多重性

android - 我怎样才能像这样设置 'EditText'的样式呢?

java - 对首选项的点击使用react

android - 禁用 android wear 挂起的 Intent 操作确认

PHP:将日期转换为日期时间并将其插入到 mysql 数据库中?

mysql - 将日期和时间与日期时间列分开,并将每个日期和时间放入其自己的日期和时间列中

java - 使用 singleTop 重新启动 MainActivity 或应用程序。

mysql - DATEDIFF() 参数问题