com.biz.common.date.calendar.CalendarUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of biz-all Show documentation
Show all versions of biz-all Show documentation
BizX 是一个灵活而高效的业务开发框架, 其中也有很多为业务开发所需要的工具类的提供。
The newest version!
package com.biz.common.date.calendar;
import com.biz.common.date.DateConstant;
import com.biz.common.date.datetime.DateTimeUtils;
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;
/**
* Calendar 时间工具类,提供了操作日期和时间的常用方法。
* 该类使用了 {@link LocalDate} 和 {@link LocalDateTime} 等 Java 8 时间类来获取和格式化日期时间。
*
* @author francis
* @version 1.0.1
* @since 1.0.1
* @see java.time.LocalDate
* @see java.time.LocalDateTime
* @see java.util.Calendar
*/
public final class CalendarUtils {
/**
* 默认的日期格式化器(格式:yyyy-MM-dd)。
*/
private static final DateTimeFormatter DEFAULT_DATE_FORMATTER = DateTimeFormatter.ofPattern(DateConstant.DEFAULT_DATE);
/**
* 默认的日期时间格式化器(格式:yyyy-MM-dd HH:mm:ss)。
*/
private static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern(DateConstant.DEFAULT_DATETIME);
/**
* 获取当前年份。
* 时间格式:yyyy
*
* @return 当前年份的字符串表示
*/
public static String currentYear() {
return String.valueOf(LocalDate.now().getYear());
}
/**
* 获取今年开始时间。
* 时间格式:yyyy-MM-dd HH:mm:ss
*
* @return 今年开始时间的字符串表示
*/
public static String currentYearStartDateTime() {
LocalDate startOfYear = LocalDate.now().withDayOfYear(1);
return LocalDateTime.of(startOfYear, LocalTime.MIN).format(DEFAULT_DATE_TIME_FORMATTER);
}
/**
* 获取今年结束时间。
* 时间格式:yyyy-MM-dd HH:mm:ss
*
* @return 今年结束时间的字符串表示
*/
public static String currentYearEndDateTime() {
LocalDate endOfYear = LocalDate.now().withDayOfYear(LocalDate.now().isLeapYear() ? 366 : 365);
return LocalDateTime.of(endOfYear, LocalTime.MAX).format(DEFAULT_DATE_TIME_FORMATTER);
}
/**
* 获取去年年份。
* 时间格式:yyyy
*
* @return 去年年份的字符串表示
*/
public static String lastYear() {
return String.valueOf(LocalDate.now().minusYears(1).getYear());
}
/**
* 获取去年开始时间。
* 时间格式:yyyy-MM-dd HH:mm:ss
*
* @return 去年开始时间的字符串表示
*/
public static String lastYearStartDateTime() {
LocalDate startOfYear = LocalDate.now().minusYears(1).withDayOfYear(1);
return LocalDateTime.of(startOfYear, LocalTime.MIN).format(DEFAULT_DATE_TIME_FORMATTER);
}
/**
* 获取去年结束时间。
* 时间格式:yyyy-MM-dd HH:mm:ss
*
* @return 去年结束时间的字符串表示
*/
public static String lastYearEndDateTime() {
LocalDate endOfYear = LocalDate.now().minusYears(1).withDayOfYear(LocalDate.now().minusYears(1).isLeapYear() ? 366 : 365);
return LocalDateTime.of(endOfYear, LocalTime.MAX).format(DEFAULT_DATE_TIME_FORMATTER);
}
/**
* 获取当年的第一天。
* 时间格式:yyyy-MM-dd
*
* @return 当年第一天的字符串表示
*/
public static String getFirstOfYear() {
LocalDate firstOfYear = LocalDate.now().withDayOfYear(1);
return firstOfYear.format(DEFAULT_DATE_FORMATTER);
}
/**
* 获取当年的最后一天。
* 时间格式:yyyy-MM-dd
*
* @return 当年最后一天的字符串表示
*/
public static String getLastOfYear() {
LocalDate lastOfYear = LocalDate.now().withDayOfYear(LocalDate.now().isLeapYear() ? 366 : 365);
return lastOfYear.format(DEFAULT_DATE_FORMATTER);
}
/**
* 获取当月的第一天。
* 时间格式:yyyy-MM-dd
*
* @return 当月第一天的字符串表示
*/
public static String getFirstOfMonth() {
LocalDate firstOfMonth = LocalDate.now().withDayOfMonth(1);
return firstOfMonth.format(DEFAULT_DATE_FORMATTER);
}
/**
* 获取当月的最后一天。
* 时间格式:yyyy-MM-dd
*
* @return 当月最后一天的字符串表示
*/
public static String getLastOfMonth() {
LocalDate lastOfMonth = LocalDate.now().plusMonths(1).minusDays(1);
return lastOfMonth.format(DEFAULT_DATE_FORMATTER);
}
/**
* 判断 {@link Calendar} 对象是否符合指定的时间格式。
*
* @param calendar 需要检查的 {@link Calendar} 对象,不能为空
* @param format 指定的时间格式,例如 "yyyy-MM-dd",不能为空
* @return 如果 {@link Calendar} 对象符合指定的时间格式,返回 true;否则返回 false
*/
public static boolean isValidFormat(Calendar calendar, String format) {
if (calendar == null || format == null || format.isEmpty()) {
return false;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.setLenient(false);
String formattedDate = sdf.format(calendar.getTime());
try {
Date parsedDate = sdf.parse(formattedDate);
Calendar parsedCalendar = Calendar.getInstance();
parsedCalendar.setTime(parsedDate);
return calendar.get(Calendar.YEAR) == parsedCalendar.get(Calendar.YEAR) &&
calendar.get(Calendar.MONTH) == parsedCalendar.get(Calendar.MONTH) &&
calendar.get(Calendar.DAY_OF_MONTH) == parsedCalendar.get(Calendar.DAY_OF_MONTH);
} catch (Exception e) {
return false;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy