Java8之前的时间、日期类API使用Date、Calendar。
Java8以前时间类API
类型转换
Date类型转换为String:SimpleDateFormat的format()方法。
String类型转换为Date:SimpleDateFormat的parse()方法,需抛出异常。
public static void main(String[] args) throws ParseException {
// Java8中LocalDateTime替换了Date
Date date = new Date();
// Java8中DateTimeFormatter替换了SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
// Date转换为字符串
String dateStr = sdf.format(date);
System.out.println(dateStr);// 2021-12-14 09:59:28
// 字符串转换为Date
Date resDate = sdf.parse(dateStr);
System.out.println(resDate);// Tue Dec 14 09:28:59 CST 2021
}
Java8时间类API
Instant:它代表的是时间戳。
LocalDate:不包含具体时间的日期,比如2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。
LocalTime:它代表的是不含日期的时间。比如13:12:39
LocalDateTime:它包含了日期及时间,不过还是没有偏移信息或者说时区。
实际使用中,计算日期就用LocalDate,计算时分秒就用LocalTime,计算日期加时分秒用LocalDateTime。
Instant
Instant:该类代表一个具体的时刻,可以精确到纳秒。该类主要提供了以下几个方法:
1)now():获取当前时刻。
2)now(Clock clock):获取clock对应的时刻。
3)minusXxx():在当前时刻基础上减去一段时间。
4)plusXxx():在当前时刻基础上加上一段时间。
LocalDate
1)now():获取当前日期。
2)now(Clock clock):获取clock对应的日期。
3)minusXxx():在当前年份基础上减去几年、几月、几周或几日等。
4)plusXxx():在当前年份基础上加上几年、几月、几周或几日等。
LocalTime
获取当前时间
格式转换:
DateTimeFormatter fmTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//当前时间
LocalDateTime now = LocalDateTime.now();
System.out.println("当前时间:"+now.format(fmTime));
LocalDateTime
时间格式化
Date格式化为字符串
字符串形式
获取当前时间,返回字符串形式:
public void findCurrentTime(){
DateTimeFormatter fmTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
String currentTime = now.format(fmTime);
System.out.println(currentTime);
}
结果:2021-04-16 17:09:37
计算时间
获取当前年
public String findCurrentYear(){
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
return String.valueOf(year);
}
结果:2021
获取当前月
方法返回两位数字表示的月份,如01、11.
public String findCurrentMonth(){
Calendar calendar = Calendar.getInstance();
int month = calendar.get(Calendar.MONTH )+1;
String monthStr = month<10?"0"+month:String.valueOf(month);
return monthStr;
}