获取两个 joda 日期之间的确切年份或日期或月份
Getting the exact years or days or months between two joda date
我需要得到两个 joda 日期时间之间的天数、月数和年数的确切差异。我正在使用以下代码:
DateTime jodaStartTime=new DateTime(startTime);
DateTime jodaEndTime=new DateTime(endTime);
Period period = new Period(jodaStartTime, jodaEndTime);
System.out.print(period.getYears() + " years, ");
System.out.print(period.getMonths() + " months, ");
但是,我需要得到准确的年份而不是 2 年,我应该得到 2010,2011
或者不是 18 个月(涵盖所有月份),我需要得到 1 到 12 之间的范围。
首先,我想更改此代码以便我可以使用 Java 8 次,那么如何使用 Java 8 次呢?
你可以保留一个列表,并根据你的不同来填写它。我已经实现了一个关于年份案例的方法来给出一个想法:
private static LinkedList yearLister(int yearCount, int startingYear, int endYear){
LinkedList years = new LinkedList();
if (yearCount < 0){ yearCount = -yearCount; }
// yearCount can be negative.
// When that is the case, you won't be able to add elements to your
// list. This statement deals with that.
if(startingYear > endYear){
for(int i = 0; i < yearCount; i++){
years.add(endYear + i + 1 );
}
} else if (startingYear < endYear) {
for(int i = 0; i < yearCount - 1; i++){
years.add(startingYear + i + 1);
}
}
System.out.println(years);
return years;
}
主要是为 2022 年和 2017 年创建简单的日期,例如:
Date d1,d2 = null; // need these for formatting
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm");
String dateStart = "01/01/2022 05:30";
String dateStop = "02/2/2017 06:31";
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
DateTime jodaStartTime=new DateTime(d1);
DateTime jodaEndTime=new DateTime(d2);
int startingYear = jodaStartTime.getYear();
int endYear = jodaEndTime.getYear();
当您将以下行添加到 main 时:
yearLister(yearCount, startingYear, endYear);
输出为:[2018, 2019, 2020, 2021]
我需要得到两个 joda 日期时间之间的天数、月数和年数的确切差异。我正在使用以下代码:
DateTime jodaStartTime=new DateTime(startTime);
DateTime jodaEndTime=new DateTime(endTime);
Period period = new Period(jodaStartTime, jodaEndTime);
System.out.print(period.getYears() + " years, ");
System.out.print(period.getMonths() + " months, ");
但是,我需要得到准确的年份而不是 2 年,我应该得到 2010,2011 或者不是 18 个月(涵盖所有月份),我需要得到 1 到 12 之间的范围。
首先,我想更改此代码以便我可以使用 Java 8 次,那么如何使用 Java 8 次呢?
你可以保留一个列表,并根据你的不同来填写它。我已经实现了一个关于年份案例的方法来给出一个想法:
private static LinkedList yearLister(int yearCount, int startingYear, int endYear){
LinkedList years = new LinkedList();
if (yearCount < 0){ yearCount = -yearCount; }
// yearCount can be negative.
// When that is the case, you won't be able to add elements to your
// list. This statement deals with that.
if(startingYear > endYear){
for(int i = 0; i < yearCount; i++){
years.add(endYear + i + 1 );
}
} else if (startingYear < endYear) {
for(int i = 0; i < yearCount - 1; i++){
years.add(startingYear + i + 1);
}
}
System.out.println(years);
return years;
}
主要是为 2022 年和 2017 年创建简单的日期,例如:
Date d1,d2 = null; // need these for formatting
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm");
String dateStart = "01/01/2022 05:30";
String dateStop = "02/2/2017 06:31";
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
DateTime jodaStartTime=new DateTime(d1);
DateTime jodaEndTime=new DateTime(d2);
int startingYear = jodaStartTime.getYear();
int endYear = jodaEndTime.getYear();
当您将以下行添加到 main 时:
yearLister(yearCount, startingYear, endYear);
输出为:[2018, 2019, 2020, 2021]