用Java减去几个月

时间:2019-05-28 15:42:54

标签: java

我正在使用两个字符串变量来存储两个不同的日期。日期以这种格式存储(2019年5月28日),我需要找出月份的不同之处。我无法确定是否需要先将这些日期转换为另一种格式再进行减法运算。

我正在使用getText()从以下位置获取这些日期 // span [@ class ='expiry_date']

3 个答案:

答案 0 :(得分:0)

您可以使用DateFormat类将String转换为Date对象。最简单的加法或减法是使用Calendar类。您可以将Date对象转换为Calendar对象并进行计算。请记住,Calendar对象不会保留时间信息,但这似乎与您的问题无关。

答案 1 :(得分:0)

最简单的方法是使用ChronoUnit#between方法:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "MMMM dd, yyyy", Locale.US );
LocalDate d1 = LocalDate.parse( "May 28, 2019", formatter );
LocalDate d2 = LocalDate.parse( "September 02, 2020", formatter );

long diff = ChronoUnit.MONTHS.between( d1, d2 );   // 15 full months

答案 2 :(得分:0)

到你给的重点      要弄清楚是否需要先将这些日期转换为另一种格式,然后再进行减法。  最好的方法是,首先将日期转换为Java 8 LocalDate,然后找出差异

以下是示例代码,尽管您没有花力气,但它可以为您提供帮助。

    DateTimeFormatter customFormatter= DateTimeFormatter.ofPattern( "MMMM dd, yyyy",Locale.US);

    LocalDate date1 = LocalDate.parse( "April 01, 2019", customFormatter );
    LocalDate date2 = LocalDate.parse( "October 01, 2019", customFormatter );


    Period dateDifference = Period.between(date1, date2);
    System.out.println(dateDifference.toTotalMonths());