首页 > 解决方案 > 使用API​​查找两个日期之间的差异的方法

问题描述

因此,对于我目前正在编写的程序,有不同的会员级别,以客户卡的形式和每个级别的优惠券,这取决于他们持有卡的时间和他们在一年中花了多少钱

我已经完成了总花费的部分,但我在日期差异方面遇到了很大的麻烦。

下面是两个相关的类。

import java.time.LocalDate;
import java.time.Month;
import java.time.Period;
import java.util.*;

class Date {

    LocalDate createdDate = LocalDate.of(2000, Month.MAY, 19);
    LocalDate today = LocalDate.now();

    public void Date() {

        Period difference = Period.between(createdDate, today);
        int years = difference.getYears();

        System.out.println("The created date is: " + createdDate);
        System.out.println("Difference between created date and current date is: " + difference.getYears() + " years");

    } 
    }

import java.time.LocalDate;
import java.time.Month;
import java.time.Period;
import java.util.*;

class silverCard {

    double coupon = 0;

    public void calCoup() {

        Date date = new Date();

        cardDetails card = new cardDetails(0001, "Adam Gong", 7000);

        if (card.getBalance() < 3500) {
            coupon = 0.04;
        } else if (card.getBalance() > 3500 && date.getYears() < 3){
            coupon = 0.05;
        }

        double totalCoupon = card.getBalance() - (card.getBalance() * coupon);

        System.out.println("Your coupon for silver card is: " + totalCoupon);
    }
}

错误来自行

} else if (card.getBalance() > 3500 && date.getYears() < 3){

其中编译器没有看到方法 getYears。我知道日期类中的 getYears 不是一种方法,但我不确定如何从 silverCard 类中调用它。我创建了一个 Date 对象并用它来调用 getYears。我也试过打电话 period.between 和 period difference 没有运气

谢谢 :)

标签: java

解决方案


您可以尝试以下解决方案。您可以使用 SimpleDateFormat 而不是 LocalDate 。您可以获得 diff 变量的日期差异。

public void getDiffBitweenTwoDates()
  throws ParseException {

    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH);
    Date firstDate = sdf.parse("08/15/2019");
    Date secondDate = sdf.parse("08/22/2019");

    long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime());
    long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);

}

如果您仍然想使用 LocalDateTime 您可以尝试以下方式..

    LocalDateTime now = LocalDateTime.now();
    LocalDateTime mins= now.minusMinutes(10);

    Duration duration = Duration.between(now, mins);
    long diff = Math.abs(duration.toMinutes());

推荐阅读