1.在java代码中常用的日期相关类:
package org.jeecg.modules.daily.entity;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
/**
* @Description: Java中常见的日期类
*/
public class Demo {
// 毫秒数
public static void main(String[] args) {
// 毫秒数,涉及到复杂的时间段,跨天等判断 可以直接用,一般不用
long l = System.currentTimeMillis();
// 日期字符串 开发中常用展示方式,注意字符串展示的方式 比如yyyy-MM-dd 、 yyyy-MM 、yyyyMM、yyyy-MM-dd HH:mm 等等
String startDateStr ="2023-03-03";
// 日期Date ,大部分的方法都已经过时,时间是用距离一个固定时间点(纪元)的毫秒数(可正可负)表示的,所以同样的这个时间点采用中国或希伯来的阴历来描述就不一样了。
Date date =new Date();
// DateFormat 类 用于格式化日期,和解析日期的具体类
SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd");
String format = sdf.format(date);
// Calendar日落类,用于操作日期,日历
Calendar calendar = null;
// LocalDate类,日历表示法的 LocalDate 类,区别于Date,决定将保存时间与给时间点命名分开,
LocalDate localDate = LocalDate.of(2023,3,3);
LocalTime localTime = LocalTime.parse(startDateStr, DateTimeFormatter.ISO_TIME);
LocalDateTime today = LocalDateTime.now();
}
}
2.日期相关类相互转化:
2.1Date 互转 String
2.2 毫秒数 与 Date 互转
2.3 Date和Calendar之间的转换:
2.4 String和LocalDate之间的转换:
2.5 Date和LocalDate之间的转换:
2.6 Date和LocalDateTime之间的转换:
2.7 LocalDate和LocalDateTime之间的转换:
2.8 String和LocalDateTime之间的转换:
3.一些日期开发场景
一般开发都是使用DateUtils 类开发;
3.1 获取两个字符串日期之间的日期
3.2 对象中有日期字符串,此对象的list,去重获取list中的日期集合
// user对象中有日期字符串
List<User> list = new ArrayList<>();
// 假设 list不为空时获取
Set<String> activityDateSet = list.stream().map(a -> a.getActivityDate()).collect(Collectors.toSet());