Java之日期时间常用的公共方法

一、 引入pom.xml

<dependency>
    <groupId>org.springblade</groupId>
    <artifactId>blade-core-tool</artifactId>
    <version>4.1.0</version>
</dependency>

二、 实现代码

1、字符串转换成日期
public static Date StrToDate(String str) {
    return DateUtil.parse(str, "yyyy-MM-dd HH:mm:ss");
}
2、日期转换成字符串(yyyy-MM-dd HH:mm:ss)
public static String DateToStr(Date date) {
	return DateUtil.formatDateTime(date);
}
3、获取年初
public static Date getDateYearFirst(int year) {
	LocalDateTime dateTime = LocalDateTime.of(year, Month.JANUARY, 1, 0, 0, 0);
	return DateUtil.toDate(dateTime);
}
4、获取年末
public static Date getDateYearEnd(int year) {
	LocalDateTime dateTime = LocalDateTime.of(year, Month.DECEMBER, 31, 23, 59, 59);
	Date date = DateUtil.toDate(dateTime);
	return date;
}
5、判断当前时间是否在时间区间之内
public static boolean beforeDate(Date startTime, Date date2) {
	return date.before(date2);
}
public static boolean afterDate(Date endTime, Date date2) {
	return date.after(date2);
}
6、获取当天距离24小时 还剩几秒
public static long getInstantSeconds() {
    Instant str1 = DateTimeUtil.toInstant(LocalDateTime.now());
    LocalDateTime midnight = 			  LocalDateTime.ofInstant(str1,ZoneId.systemDefault()).plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
    LocalDateTime currentDateTime = LocalDateTime.ofInstant(str1,ZoneId.systemDefault());
    long seconds = ChronoUnit.SECONDS.between(currentDateTime, midnight);
    return seconds;
}
7、LocalDate转String
public static String getStrToLocalDate(LocalDate date) {
    String dateStr = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
    return dateStr;
}
8、毫秒转化为date
public static String millToDate(Long mill) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = new Date(Long.valueOf(mill));
    String formattedDate = sdf.format(date);
    return formattedDate;
}
9、获取当前星期几
public static String getDayOfWeek(String date) {
    try {
        LocalDate localDate = LocalDate.parse(date, DateTimeFormatter.ISO_DATE);
        DayOfWeek dayOfWeek = localDate.getDayOfWeek();
        String alias = switch (dayOfWeek.getValue()) {
            case 1 -> "星期一";
            case 2 -> "星期二";
            case 3 -> "星期三";
            case 4 -> "星期四";
            case 5 -> "星期五";
            case 6 -> "星期六";
            case 7 -> "星期天";
            default -> "未知";
        };
        return alias;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "未知";
}
10、时间差
public static long getDurationSeconds(Date startTime, Date endTime) {
    Instant start = startTime.toInstant();
    Instant end = endTime.toInstant();
    Duration duration = Duration.between(start, end);
    return duration.getSeconds();
}
11、判断选择的日期是否是本周
public static boolean isThisWeek(Date time) {
    Calendar calendar = Calendar.getInstance();
    int currentWeek = calendar.get(Calendar.WEEK_OF_YEAR);
    calendar.setTime(time);
    int paramWeek = calendar.get(Calendar.WEEK_OF_YEAR);
    if (paramWeek == currentWeek) {
        return true;
    }
    return false;
}
12、获取当前日期(yyyy-MM-dd)
public static Integer getDay(Date date) {
    // 创建一个 Calendar 对象
    Calendar cal1 = Calendar.getInstance();
    // 获取当前日期
    cal1.setTime(date);
    int month = cal1.get(Calendar.MONTH) + 1;
    int day = cal1.get(Calendar.DAY_OF_MONTH);
    return Integer.parseInt(cal1.get(Calendar.YEAR) + "" + (month < 10 ? "0" + month : month) + "" + (day < 10 ? "0" + day : day));
}
13、 获取本周的开始时间
public static String getBeginDayOfWeek() {
    // 获取当天日期
    LocalDate now = LocalDate.now();
    LocalDate monday = now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
    DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    return monday.format(pattern);
}
14、 获取本周的结束时间
public static String getEndDayOfWeek() {
    // 获取当天日期
    LocalDate now = LocalDate.now();
    LocalDate sunday = now.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
    DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    return sunday.format(pattern);
}
15、获取本月的开始时间
public static String getBeginDayOfMonth() {
    // 获取当天日期
    LocalDate now = LocalDate.now();
    LocalDate firstDayOfMonth = now.with(TemporalAdjusters.firstDayOfMonth());
    DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    return firstDayOfMonth.format(pattern);
}
16、获取本月的结束时间
public static String getEndDayOfMonth() {
    // 获取当天日期
    LocalDate now = LocalDate.now();
    LocalDate lastDayOfMonth = now.with(TemporalAdjusters.lastDayOfMonth());
    DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    return lastDayOfMonth.format(pattern);
}
17、获取上周的开始时间
public static String getBeginDayOfLastWeek() {
    LocalDate lastWeek = LocalDate.now().minusWeeks(1).with(TemporalAdjusters.previous(DayOfWeek.SUNDAY)).plusDays(1L);
    DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    return lastWeek.format(pattern);
}
18、获取上周的结束时间
public static String getEndDayOfLastWeek() {
    LocalDate lastWeek = LocalDate.now().minusWeeks(1).with(TemporalAdjusters.next(DayOfWeek.MONDAY)).minusDays(1L);
    DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    return lastWeek.format(pattern);
}
19、获取上月的开始时间
public static String getBeginDayOfLastMonth() {
    LocalDate today = LocalDate.now();
    LocalDate lastMonthStart = today.minusMonths(1).withDayOfMonth(1);
    DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    return lastMonthStart.format(pattern);
}
20、获取上月的结束时间
public static String getEndDayOfLastMonth() {
    LocalDate today = LocalDate.now();
    LocalDate lastDayOfLastMonth = today.minus(1, ChronoUnit.MONTHS).withDayOfMonth(today.minus(1, ChronoUnit.MONTHS).lengthOfMonth());
    DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    return lastDayOfLastMonth.format(pattern);
}
21、获取当天的开始时间
public static String getStartDayOfToDay() {
    // 获取当天日期
    LocalDate now = LocalDate.now();
    DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    LocalDateTime todayStart = now.atStartOfDay();
    String startTime = todayStart.format(pattern);
    return startTime;
}
22、获取当天的结束时间
public static String getEndDayOfToDay() {
    // 获取当天日期
    LocalDate now = LocalDate.now();
    LocalDateTime todayEnd = LocalDateTime.of(now, LocalTime.MAX);
    DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String endTime = todayEnd.format(pattern);
    return endTime;
}
23、获取昨天开始时间戳
public static long  yesterdayStartTime(){
    // 获取当前日期的前一天
    LocalDate yesterday = LocalDate.now().minusDays(1);
    LocalDateTime startOfDay = yesterday.atStartOfDay();
    // 转换为特定时区的时间戳(这里以系统默认时区为例)
    long startTimestamp = startOfDay.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    return startTimestamp;
}
24、获取昨天结束时间戳
public static long  yesterdayEndTime(){
    // 获取当前日期的前一天
    LocalDate yesterday = LocalDate.now().minusDays(1);
    LocalDateTime startOfDay = yesterday.atStartOfDay();
    LocalDateTime endOfDay = startOfDay.plusDays(1).minusNanos(1);
    // 转换为特定时区的时间戳(这里以系统默认时区为例)
    long endTimestamp = endOfDay.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    return endTimestamp;
}

Java的世界博大精深,这只是冰山一角,如果有任何问题或建议,欢迎随时与我交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值