java实现两个日期相减得到中间的年份和月份

public class DateSimple { public static void main(String[] args) { String startTime = "2012-07-01";String endTime = "2014-07-31";String[] arg1 = startTime.split("-");String[] arg2 = endTime.split("-");int year1 = Integer.valueOf(arg1[0]);int year2 = Integer.va...
java实现两个日期相减得到中间的年份和月份
public class DateSimple {

public static void main(String[] args) {
String startTime = "2012-07-01";
String endTime = "2014-07-31";

String[] arg1 = startTime.split("-");
String[] arg2 = endTime.split("-");
int year1 = Integer.valueOf(arg1[0]);
int year2 = Integer.valueOf(arg2[0]);
int month1 = Integer.valueOf(arg1[1]);
int month2 = Integer.valueOf(arg2[1]);

for (int i = year1; i <= year2; i++) {
int monthCount = 12;
int monthStart = 1;
if (i == year1) {
monthStart = month1;
monthCount = 12-monthStart+1;
} else if (i == year2) {
monthCount = month2;
}
for(int j = 0; j < monthCount; j++){
int temp = monthStart+j;
if(temp >=10){
System.out.println(i+"-"+(monthStart+j));
}else{
System.out.println(i+"-0"+(monthStart+j));
}
}

}
}
}

2012-07
2012-08
2012-09
2012-10
2012-11
2012-12
2013-01
2013-02
2013-03
2013-04
2013-05
2013-06
2013-07
2013-08
2013-09
2013-10
2013-11
2013-12
2014-01
2014-02
2014-03
2014-04
2014-05
2014-06
2014-072014-08-13
在 Java 中,可以使用 `java.time.LocalDate` 类来表示日期,并使用 `java.time.Period` 类来计算两个日期之间的年份和月份差。以下是一个示例代码:

```java
import java.time.LocalDate;
import java.time.Period;
import java.util.ArrayList;

public class DateSubtraction {
public static void main(String[] args) {
// 定义两个日期
LocalDate date1 = LocalDate.of(2013, 7, 1);
LocalDate date2 = LocalDate.of(2014, 7, 31);

// 计算两个日期之间的差距
Period period = Period.between(date1, date2);

// 输出年份和月份差
System.out.println("Years: " + period.getYears() + ", Months: " + period.getMonths());

// 按月份拆分日期并输出
ArrayList<LocalDate> dates = new ArrayList<>();
LocalDate current = date1;
while (current.isBefore(date2) || current.equals(date2)) {
dates.add(current);
current = current.plusMonths(1);
}
for (int i = 0; i < dates.size() - 1; i++) {
System.out.println(dates.get(i) + " - " + dates.get(i + 1));
}
}
}
```

运行上述代码会输出以下结果:

```
Years: 1, Months: 0
2013-07-01 - 2013-08-01
2013-08-01 - 2013-09-01
2013-09-01 - 2013-10-01
2013-10-01 - 2013-11-01
2013-11-01 - 2013-12-01
2013-12-01 - 2014-01-01
2014-01-01 - 2014-02-01
2014-02-01 - 2014-03-01
2014-03-01 - 2014-04-01
2014-04-01 - 2014-05-01
2014-05-01 - 2014-06-01
2014-06-01 - 2014-07-01
```

其中,第一行输出了年份和月份差,即 1 年 0 个月;接着,程序按照每个月的开始时间和结束时间拆分日期,并逐个输出相邻两个时间段。通过这些输出,我们可以看到从 2013 年 7 月到 2014 年 7 月之间,一共经历了 1 年 0 个月,并分别列出了每个月的时间范围。2023-03-12
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar ca=Calendar.getInstance();
ca.setTime(sdf.parse("2014-01-01"));

Calendar ca1=Calendar.getInstance();
ca1.setTime(sdf.parse("2014-08-01"));

int y=ca.get(ca.YEAR);
int y1=ca1.get(ca1.YEAR);

int mon=ca.get(ca.MONTH);
int mon1=ca1.get(ca1.MONTH);

int depart=Math.abs(y-y1)*12+Math.abs(mon-mon1);//相差的总月份

for(int i=0;i<depart;i++){
ca.add(ca.MONTH, 1);
System.out.println(sdf.format(ca.getTime()));
}2014-08-13
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class MonthTest{

public static void main(String[] args) throws ParseException {
String d1 = "2012-01-12";
String d2 = "2010-02-11";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(d1));
int year1 = c.get(Calendar.YEAR);
int month1 = c.get(Calendar.MONTH);

c.setTime(sdf.parse(d2));
int year2 = c.get(Calendar.YEAR);
int month2 = c.get(Calendar.MONTH);

int result;
if(year1 == year2) {
result = month1 - month2;
} else {
result = 12*(year1 - year2) + month1 - month2;
}
System.out.println(result);
}
}2014-08-13
没有编译环境,提供一下思路:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");

Calendar calendar = Calendar.getInstance();//日历对象
calendar.setTime(date1);//设置起始日期
while(calendar.getTime() <= date2)
{
System.out.println(sdf.format(calendar.getTime()));
calendar.add(Calendar.MONTH, 1);//月份加一
}2014-08-13
public class Test {

public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");

Calendar c = Calendar.getInstance();

Calendar c2 = Calendar.getInstance();
c2.add(Calendar.YEAR, -1);
c2.add(Calendar.MONTH, 1);

while(c2.before(c)){
System.out.println(sdf.format(c2.getTime()));
c2.add(Calendar.MONTH, 1);
}
}

}2014-08-13
mengvlog 阅读 8 次 更新于 2025-07-19 22:46:42 我来答关注问题0
  • 在Java中实现两个时间相减得到年月,可以参考以下代码。首先,我们需要导入必要的包并定义一个函数:大概判断了一下,比较粗糙,仅供参考。private static void function17() throws Exception { Scanner sc = new Scanner(System.in); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Sys...

  • 在Java中,计算两个时间点之间的差值时,可以将时间字符串转换为Date对象,然后获取它们的毫秒值进行相减。首先,我们使用SimpleDateFormat将时间字符串格式化。接着,通过Calendar类获取年份和月份,计算年月差。也可以直接通过毫秒值计算天数差。以下是具体步骤:1. 使用SimpleDateFormat实例化日期格式化器,格...

  • public static void main(String[] args) { String startTime = "2012-07-01";String endTime = "2014-07-31";String[] arg1 = startTime.split("-");String[] arg2 = endTime.split("-");int year1 = Integer.valueOf(arg1[0]);int year2 = Integer.valueOf(arg2[0]);int mont...

  • roll(f, delta) 将 delta 添加到 f 字段中,但不更改更大的字段。这等同于调用 add(f, delta)如果要计算2个日期之间的差距,可以取得自1970 年 1 月 1 日的 00:00:00.000各自的毫秒数字,然后相减 long millionSecondsForDate1 = date1.getTime();long millionSecondsForDate2 = date2.get...

  •  ssdut121 java实现两个时间相减,得到这个时间段是几年?不满1年的也算1年,依次类推,不满2年的算2年,

    import java.text.ParseException;import java.util.Calendar;import java.util.Scanner;/* * 需求:java实现两个时间相减,得到这个时间段是几年?不满1年的也算1年,依次类推,不满2年的算2年 * * PS:我是菜鸟,东拼四凑弄出来这个。大概思路是这样,健壮性判断和bug、优化代码就靠你自己了 ...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部