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