Java时间类操作
一、Date()基本使用
1. 获取毫秒数
Date date=new Date();
System.out.println(date.getTime());
输出:
1596420008933
2. Date()时间比较
date类型的比较,前者.compareTo(后者)。前者晚于后者,则返回1;相等返回0;早于后者,返回-1.
Date date1=new Date();
for(int i=0;i<100000;i++){
int a=0;
}
Date date2=new Date();//date2晚
System.out.println(date1.compareTo(date2));
输出:
-1
毫秒数比较,前者-后者与0相比即可
Long date1=new Date().getTime();
for(int i=0;i<100000;i++){
int a=0;
}
Long date2=new Date().getTime();
boolean k=(date1-date2)>0;
System.out.println(k);
输出:
Flase
3. Date()时间格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化日期转Date
Date lastTime = sdf.parse("2020-05-28 00:00:00");
//Date时间格式化
Date date=new Date();
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(dateFormat.format(date));
二、Java8新增的时间日期包
- LocalDate类:代表当前时区的日期
- LocalTime类:代表当前时区的时间
- LocalDateTime:代表当前时区的日期时间
1. 获取当前时间
LocalDateTime date=LocalDateTime.now();
2. 格式化LocalDateTime
public static String TimeToString (String pattern){
LocalDateTime date=LocalDateTime.now();
String now=date.format(DateTimeFormatter.ofPattern(pattern));
return now;
}
public static void main(String[] args) {
String now=TimeToString("yyyy-MM-dd HH:mm:ss");
System.out.println(now);
}
3. 格式化时间转LocalDateTime
public static LocalDateTime StringToTime (String time){
LocalDateTime date=LocalDateTime.parse(time,
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
return date;
}
public static void main(String[] args) {
LocalDateTime dateTime=StringToTime("2020-12-21 23:59:59");
System.out.println(dateTime);
}
4. Date转LocalDateTime
public static LocalDateTime DateToTime (){
Date date =new Date();
Instant instant=date.toInstant();
ZoneId zoneId=ZoneId.systemDefault();
LocalDateTime time=instant.atZone(zoneId).toLocalDateTime()
return time;
}
5. LocalDateTime转Date
public static Date TimeToDate (){
LocalDateTime localDateTime=LocalDateTime.now();
ZoneId zoneId=ZoneId.systemDefault();
ZonedDateTime zdt=localDateTime.atZone(zoneId);
return Date.from(zdt.toInstant());
}
}
6. 计算获得LocalDateTIme的毫秒数
public static Long CountMills(){
LocalDateTime localDateTime=LocalDateTime.now();
return localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli();
}
7. 获得LocalDateTIme的具体时间
//getDayOfYear 获得一年里今天是第几天
//getMonth 返回Month类型
public static String GetDetailedTime(){
LocalDateTime lt =LocalDateTime.now();
return lt.getYear()+"年"+lt.getMonthValue()+"月"+lt.getDayOfMonth()+"日"
+lt.getHour()+"时"+lt.getMinute()+"分"+lt.getSecond()+"秒";
}
8. 快速自定义LocalDateTime时间
public static String GetDetailedTime(){
LocalDateTime lt =LocalDateTime.of(2020,2,5,12,59,59);
}
9. 获得指定时间的前几天或者后几天
plus??小时,天 ,月份等都可。
public static String GetPreviousDay(){
LocalDateTime lt =LocalDateTime.of(2020,3,1,20,23,59);
return TimeToString(lt.plusDays(1),"yyyy-MM-dd HH:mm:ss");
}
10. 比较LocalDateTime
转化成毫秒数比较即可
略
通过isAfter,isBefore,isequal比较
public static boolean CompareDate(){
LocalDateTime before =LocalDateTime.of(2020,3,1,20,23,59);
LocalDateTime after =LocalDateTime.of(2020,4,1,20,23,59);
return before.isAfter(after);
}