Date类
计算时间时初始时间为1970年1月1日 00:00:00
初始化
import java.util.Date;
1、无参的
Date d1 = new Date(); // 得到现在的时间
2、有参的
long date = 1000*60*60;
Date d2 = new Date(date); //输出:Thu Jan 01 09:00:00 CST 1970
常用方法
计算现在距初始时间多少毫秒
Date d = new Date();
System.out.println(d.getTime()); //输出:1718072678201
计算初始时间过了多少毫秒以后是什么时候
long time = 1000*60*60;
d.setTime(time); //输出: Thu Jan 01 09:00:00 CST 1970
SimpleDateFormat日期转换类
import java.text.ParseException;
import java.text.SimpleDateFormat;
//格式化:从 Date 到 String 使用format
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat();//输出格式:24-6-11 上午10:38
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //输出格式:24年6月11日 10:38:24
String s = sdf.format(d);
//从 String 到 Date 使用parse
String ss = "2048-08-09 11:11:11";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf2.parse(ss);//输出格式:Sun Aug 09 11:11:11 CST 2048
LocalDateTime类
import java.time.LocalDateTime;
初始化
1、无参
LocalDateTime now = LocalDateTime.now(); //输出当前时间
2、有参
LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 11, 11, 11); //输出指定时间
获取年月日等时间的方法
获取年份;:int year = localDateTime.getYear(); // 2020
获取月份:int month = localDateTime.getMonthValue(); // 11
获取日期:int day = localDateTime.getDayOfMonth(); //11
获取一年中的第几天(1-366)int dayOfYear = localDateTime.getDayOfYear(); //316
获取分钟 int minute = localDateTime.getMinute();
获取小时 int hour = localDateTime.getHour();
特别的
获取星期
import java.time.DayOfWeek;
DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
获取月份
import java.time.Month;
Month month1 = localDateTime.getMonth();
import java.time.LocalDate;
import java.time.LocalDateTime; == import java.time.*;
import java.time.LocalTime;
转换成为一个LocalDate对象,获取日期
LocalDate localDate = localDateTime.toLocalDate(); // 2020-12-12
转换成为一个LocalTime对象,获取时间
LocalTime localTime = localDateTime.toLocalTime(); // 08:10:12
格式化和解析
import java.time.format.DateTimeFormatter;
LocalDateTime localDateTime = LocalDateTime.now()
//ofPattern使用指定的日期模板获取一个日期格式化器
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
//Format把一个LocalDateTime格式化成为一个字符串
String s = localDateTime.format(pattern);
//parse把一个日期字符串解析成为一个LocalDateTime对象
LocalDateTime parse = LocalDateTime.parse(s, pattern);
加减时间
LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 13, 14, 15);
LocalDateTime newLocalDateTime = localDateTime.plusYears(-1);
// 2019-11-11T13:14:15 时间少一年
LocalDateTime newLocalDateTime = localDateTime.minusYears(-1);
//2021-11-11T13:14:15 时间加一年
修改时间
直接修改月份,修改范围要合理。下面是修改月份,范围为1—12
LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 13, 14, 15);
LocalDateTime newLocalDateTime = localDateTime.withMonth(12);// 2020-12-11T13:14:15
Period计算时间间隔
import java.time.Period;
LocalDate localDate1 = LocalDate.of(2020, 1, 1);
LocalDate localDate2 = LocalDate.of(2048, 12, 12);
//between(开始时间,结束时间) 计算两个"时间"的间隔
Period period = Period.between(localDate1, localDate2);
System.out.println(period);//P28Y11M11D
//getYears() 获得这段时间的年数
System.out.println(period.getYears());//28
//getMonths() 获得此期间的月数,不是总月数
System.out.println(period.getMonths());//11
//getDays() 获得此期间的天数
System.out.println(period.getDays());//11
//toTotalMonths() 获取此期间的总月数,不是总天数
System.out.println(period.toTotalMonths());//347
Duration计算时间间隔
import java.time.Duration;
LocalDateTime localDateTime1 = LocalDateTime.of(2020, 1, 1, 13, 14, 15);
LocalDateTime localDateTime2 = LocalDateTime.of(2020, 1, 2, 11, 12, 13);
//between(开始时间,结束时间) 计算两个“时间"的间隔
Duration duration = Duration.between(localDateTime1, localDateTime2);//PT21H57M58S
//toSeconds() 获得此时间间隔的秒
System.out.println(duration.toSeconds());//79078
//toMillis() 获得此时间间隔的毫秒
System.out.println(duration.toMillis());//79078000
//toNanos() 获得此时间间隔的纳秒
System.out.println(duration.toNanos());//79078000000000