1.Date 日期
public class Main {
public static void main(String[] args) {
//1.获取当前日期时间
Date date1 = new Date();
System.out.println(date1);
//2.获取指定时间,参数为从1970年7月1日00:00:00.0000开始计算的毫秒值
Date date2 = new Date(1000);
System.out.println(date2);
//3.从1970年7月1日00:00:00.0000到date对象的毫秒数
long l1 = date1.getTime();
long l2 =date2.getTime();
System.out.println(l1);
System.out.println(l2);
//获取当前时间的毫秒值常用System.currentTimeMillis(),这个方法可以调试代码运行速度
long start = System.currentTimeMillis();
//{代码块}
long end = System.currentTimeMillis();
System.out.println(end -start);
}
}
2.SimpleDateFormat 格式日期
public class Main {
public static void main(String[] args) throws ParseException {
//指定日期格式,yyyy是年,MM是月份,dd是日, hh是小时(12小时制),HH是小时(24小时制),mm是分钟,ss是秒,SSS是毫秒
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
//通过SimpleDateFormat对象的format方法传入一个日期对象,返回值类型是String,完成了日期转成字符串
String str = sdf.format(new Date());
System.out.println(str);
//通过SimpleDateFormat对象的parse方法传入一个字符串,返回值类型是date,完成了字符串转日期
Date date = sdf.parse("2022-12-09 16:44:20.123");
System.out.println(date);
}
}
3.Calendar 更灵活的日期时间类
public class Main {
public static void main(String[] args) throws ParseException {
//创建对象,默认插入的是当前的时间,因为Calendar是抽象类,实际上创建的是GregorianCalendar对象
Calendar c = Calendar.getInstance();
//将Calendar对象转为Date对象
Date date= c.getTime();
//将Date对象的具体时间值注入到Calendar对象中
c.setTime(date);
//设置年月日时分秒,对象不变依旧是c
c.set(1994,9,10,4,55,26);
//单独设置 某一项属性
// Calendar.YEAR 年份
//Calendar.MONTH 月份
//Calendar.DATE 日期
//Calendar.DAY_OF_MONTH 日期,和上面的字段意义完全相同
//Calendar.HOUR 12小时制的小时
//Calendar.HOUR_OF_DAY 24小时制的小时
//Calendar.MINUTE 分钟
//Calendar.SECOND 秒
//Calendar.DAY_OF_WEEK 星期几
c.set(Calendar.YEAR,1995);
//获得某一项属性
int year = c.get(Calendar.YEAR);
//某一项属性进行增减
c.add(Calendar.YEAR,-1);
}
}
4.jdk1.8的新日期时间类
4.1 Localdate
public class Main {
public static void main(String[] args) throws ParseException {
//获取当前日期
LocalDate ld1= LocalDate.now();
//获取指定日期
LocalDate ld2= LocalDate.of(1994,9,10);
//获取年份
int year = ld1.getYear();
//获取月份,getMonth()返回值是Month类型,getMonthValue()方法返回的是short类型
int month = ld1.getMonthValue();
//获取月份中的第几天
int day1 = ld1.getDayOfMonth();
//获取年份中的第几天
int day2 = ld1.getDayOfMonth();
//获取星期
int week = ld1.getDayOfWeek().getValue();
//更改日期,返回的是一个新的LocalDate对象,ld1不变
LocalDate ld3 = ld1.withYear(1995);
//年份增加
LocalDate ld4 = ld1.plusYears(1995);
//年份减少
LocalDate ld5 = ld1.minusYears(1995);
}
}
4.2 Localdatetime ->在Localdate基础上增加了时间,关于日期部分的使用和Localdate相同
public class Main {
public static void main(String[] args) throws ParseException {
//获取当前日期
LocalDateTime ldt1= LocalDateTime.now();
System.out.println(ldt1);
//获取指定日期
LocalDateTime ldt2= LocalDateTime.of(1994,9,10,10,0,0);
//获取年份
int year = ldt1.getYear();
//获取月份,getMonth()返回值是Month类型,getMonthValue()方法返回的是short类型
int month = ldt1.getMonthValue();
//获取月份中的第几天
int day1 = ldt1.getDayOfMonth();
//获取年份中的第几天
int day2 = ldt1.getDayOfMonth();
//获取星期
int week = ldt1.getDayOfWeek().getValue();
//获取小时
int hour = ldt1.getHour();
//获取分钟
int minute = ldt1.getMinute();
//获取秒数
int second = ldt1.getSecond();
//更改时间,返回的是一个新的LocalDateTime对象,ldt1不变
LocalDateTime ldt3 = ldt1.withHour(23);
System.out.println(ldt3);
//小时增加,23加2 之后 天数+1 小时变成1点
LocalDateTime ldt4 = ldt3.plusHours(2);
System.out.println(ldt4);
//小时
LocalDateTime ldt5 = ldt1.minusHours(1);
}
}
4.3 指定格式日期时间DateTimeFormatter
public class Main {
public static void main(String[] args) throws ParseException {
//自定义格式
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mi:ss.sss");
//生成LocalDateTime对象
LocalDateTime ldt1 = LocalDateTime.now();
//和LocalDateTime对象关联,返回字符串,完成日期按指定格式转成字符串
String dateStr =dtf.format(ldt1);
//和字符串关联返回时间日期对象,完成字符串按指定格式转日期
LocalDateTime ldt2 = (LocalDateTime) dtf.parse(dateStr);
}
}
5.计算日期间隔
public class Main {
public static void main(String[] args) throws ParseException {
//传统Date对象的计算方法
Date start = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2022-12-11 14:46:00");
Date end = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2022-12-12 14:46:00");
long oneDayMillis = 1000*60*60*24;
long days1 = (start.getTime() - end.getTime())/oneDayMillis;
//jdk1.8之后
LocalDateTime yesterDay = LocalDateTime.of(2022,12,11,14,46);
LocalDateTime today = LocalDateTime.of(2022,12,12,14,46);
//生成时间间隔对象
Duration d = Duration.between(yesterDay,today);
//返回相差天数,类型是long,类似的方法还有toMillis() ->返回相差毫秒值 toHours()->返回相差小时数 toMinutes() ->返回相差分钟数
long days2=d.toDays();
d.toMillis();
d.toHours();
d.toMinutes();
//返回相差秒数用getSecond()
d.getSeconds();
}
}