一、日期与字符串的互相转换
-
将 date 转换为 string 用 sdf.format()
-
将 string 转换为 date 用 sdf.parse()
import java.text.SimpleDateFormat; import java.util.Date; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); System.out.println("这个是date格式为string的数据:"+sdf.format(date)); Date dt = sdf.parse("2021-11-11"); // 这样出来的结果是 datetime System.out.println("这是从string转换为date的数据:"+dt); java.sql.Date sdate = null; sdate = new java.sql.Date(dt.getTime()); // 这样出来的结果是 date System.out.println("这是用java.sql.Date对datetime转换的数据:"+sdate);
结果: 这个是date格式为string的数据:2021-09-17 这是从string转换为date的数据:Thu Nov 11 00:00:00 CST 2021 这是用java.sql.Date对datetime转换的数据:2021-11-11
获取N天之前的日期 用Duration 或是 LocalDate
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
Instant ins2 = Instant.now().plus(Duration.ofDays(-2));
// 这里的-2 是指取 之前两天的日期,可以根据需求修改。Duration的日期是 instant
System.out.println("这是用duration获取的2天之前的日期:"+ins2);
// localDate 也是可以计算相隔N天或是N年的日期,其格式是这样的 2021-09-15
LocalDate ld = LocalDate.now().plusDays(-2);
System.out.println("这是用LocalDate获取的2天之前的日期:"+ld);
结果:
这是用duration获取的2天之前的日期:2021-09-15T09:24:18.255568400Z
这是用LocalDate获取的2天之前的日期:2021-09-15
获取两个时间的间隔天数或是月用Period
import java.time.Period;
LocalDate ld2 = LocalDate.now();
LocalDate ld3 = LocalDate.of(2019, 9, 11);
Period per = Period.between(ld3, ld2); //前面较早的日期应该放前面,不然会是个负值。
System.out.println("这是用period获取的两时间之间的相隔年份:"+per.getYears());
System.out.println("这是用period获取的两时间之间的相隔月份:"+per.getMonths());
System.out.println("这是用period获取的两时间之间的相隔天数:"+per.getDays());
结果:
这是用period获取的两时间之间的相隔年份:2
这是用period获取的两时间之间的相隔月份:0
这是用period获取的两时间之间的相隔天数:6