1、自1970-01-01 00:00:00.000到方法执行一瞬间经过的毫秒数
此方法多用于计算时间差
@Test
public void test1(){
long currentTimeMillis = System.currentTimeMillis();
System.out.println(currentTimeMillis);
}
2、Date类
Date date = new Date();
System.out.println(date);
//将日期转化为容易看懂的数据
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //声明日期格式化器
String format = simpleDateFormat.format(date); //根据格式化器将日期转化
System.out.println(format);
其中格式化器“”中的格式何以任意填写。
3、将日期字符串转化为Date类
//将日期字符串转化为Date类
String string = "2022-12-11 10:20:50";
try {
Date parse = simpleDateFormat.parse(string);
String format1 = simpleDateFormat.format(parse);
System.out.println(format1);
} catch (ParseException e) {
e.printStackTrace();
}
//格式化毫秒值
String format1 = simpleDateFormat.format(currentTimeMillis); //格式化毫秒
System.out.println(format1);
4、Calendar类
Calendar是一个抽象类,并且没有子类,只能通过单例创建对象。
获取当前时间
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
int year = calendar.get(Calendar.YEAR);
System.out.println(year);
int month = calendar.get(Calendar.MONTH); //比实际值小1
System.out.println(month);
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
设置时间:底层实现其实是对数组进行操作
calendar.set(Calendar.YEAR,2002);
calendar.set(Calendar.MONTH,10);
calendar.set(Calendar.DAY_OF_MONTH,8);
System.out.println(calendar.getTime());
修改时间
calendar.add(Calendar.YEAR,-19);
calendar.add(Calendar.MONTH,10);
calendar.add(Calendar.DAY_OF_MONTH,39);
System.out.println(calendar.getTime());
练习:获取当前日期对象,将其改成自己的生日,并推算自己的百天
@Test
public void exer(){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,1988);
calendar.set(Calendar.MONTH,5);
calendar.set(Calendar.DAY_OF_MONTH,20);
System.out.println(calendar.getTime());
calendar.add(Calendar.DAY_OF_MONTH,100);
System.out.println(calendar.getTime());
}
总结:
Calendar类的操作不符合人类的习惯,并且对象不安全,因为可以随意修改数据。
5、java8中新的API LocalDate、LocalTime、LocalDateTime
一旦创建不能够修改,如果修改,那么会生成新的对象。
LocalDate:
获取时间:
@Test
public void test3(){
LocalDate now = LocalDate.now();
System.out.println(now);
int year = now.getYear();
int month = now.getMonthValue();
int dayOfMonth = now.getDayOfMonth();
System.out.println(year + " " + month + " " + dayOfMonth);
}
修改时间
//修改时间 2002 11 8
LocalDate withYear = now.withYear(2002);
System.out.println(withYear);
LocalDate withMonth = withYear.withMonth(11);
System.out.println(withMonth);
LocalDate withDay = withMonth.withDayOfMonth(8);
System.out.println(withDay);
或者
LocalDate newDate = now.withYear(2002).withMonth(12).withDayOfMonth(15);
System.out.println(newDate);
增加时间:
LocalDate newDate1 = newDate.plusDays(100);
System.out.println(newDate1);
使用新API完成上面练习
@Test
public void test4(){
LocalDate now = LocalDate.now();
System.out.println(now);
LocalDate myBir = now.withYear(1563).withMonth(12).withDayOfMonth(20);
System.out.println(myBir);
LocalDate baiTian = myBir.plusDays(200);
System.out.println(baiTian);
}
5、LocalTime类
获取当前时间,获取时间,修改时间
@Test
public void test5(){
LocalTime time = LocalTime.now();
System.out.println(time);
int hour = time.getHour();
System.out.println(hour);
LocalTime time1 = time.withHour(14);
System.out.println(time1);
}
6、LocalDateTime类
获取日期时间,使用格式化器,获取、更改时间
@Test
public void test6(){
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
System.out.println(dtf.format(dateTime));
System.out.println(dateTime.getHour());
LocalDateTime dateTime1 = dateTime.withHour(23);
System.out.println(dateTime1);
}
根据指定时间创建日期
@Test
public void test7(){
LocalDateTime dateTime = LocalDateTime.of(2008,8,8,8,8,7);
System.out.println(dateTime);
}