需求
根据当前时间 如:2020-10-13 减去过去的某一天 如:2020-09-30
实现
方式一
// 定义项目进行天数
long Days = 0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
long time = sdf.parse("2021-01-19").getTime();
long time1 = sdf.parse("2020-10-12")
.getTime();
Days = (int) ((time -time1) /(24
* 60 * 60 * 1000));
} catch (ParseException e) {
e.printStackTrace();
}
方式二
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Calendar;
public class TestDay {
public static void main(String[] args) {
String dateStr1 = "2020-09-30";
String dateStr2 = "2021-01-12";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
try {
dateStr1 = sdf.format(sdf2.parse(dateStr1));
dateStr2 = sdf.format(sdf2.parse(dateStr2));
} catch (ParseException e) {
e.printStackTrace();
}
long time1 = time(dateStr1);
long time2 = time(dateStr2);
// 相减得出的天数mills
long mills = time1> time2
? time1 - time2
: time2 - time1;
System.out.println((int) (mills / 1000 / 3600 / 24));
}
// 封装截取字符串
public static long time(String times){
int year = Integer.parseInt(times.substring(0, 4));
int month = Integer.parseInt(times.substring(4, 6));
int day = Integer.parseInt(times.substring(6, 8));
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month - 1);
c.set(Calendar.DAY_OF_MONTH, day);
return (c.getTimeInMillis());
}
}
注意
以上两种方式实现都可以,可以试着尝试一下,自己偏向第一种,代码少嘛,自己犯了一个不改犯的问题,导致排查了半天。自己定义yyyy-mm-dd ,mm小写,导致出现负数的情况,在转化的时候出现的问题,M与m的区别 区分 月和分,如:yyyy-MM-dd HH:mm:ss;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 自己定义yyyy-mm-dd ,mm小写,导致出现负数的情况,M与m的区别 区分 月和分,如:yyyy-MM-dd HH:mm:ss;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");