public class DateUtils {
public static void main(String[] args) {
System.out.println("相差的天数:"+getDay("2024-2-24","2024-6-24"));
}
/**
* 当前日期格式
* @param date
* @param pattern
* @return
*/
public static String dateToString(Date date, String pattern) {
SimpleDateFormat var2 = new SimpleDateFormat(pattern);
return var2.format(date);
}
/**
* 上周开始时间
* @return
*/
public static LocalDateTime lastWeekStartTime() {
LocalDate lastWeek = LocalDate.now().minus(1L, ChronoUnit.WEEKS);
return LocalDateTime.of(lastWeek.minusDays(lastWeek.getDayOfWeek().getValue() - 1), LocalTime.MIN);
}
/**
* 上周结束时间
*
* @return
*/
public static LocalDateTime lastWeekEndTime() {
LocalDate lastWeek = LocalDate.now().minus(1L, ChronoUnit.WEEKS);
return LocalDateTime.of(lastWeek.plusDays(7 - lastWeek.getDayOfWeek().getValue()), LocalTime.MAX);
}
/**
* 上个月的开始时间
* @return
*/
public static LocalDateTime lastMonthStartTime() {
LocalDateTime lastMonth = LocalDateTime.now().minus(1L, ChronoUnit.MONTHS);
return lastMonth.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN);
}
/**
* 上个月的结束时间
* @return
*/
public static LocalDateTime lastMonthEndTime() {
LocalDateTime lastMonth = LocalDateTime.now().minus(1L, ChronoUnit.MONTHS);
return lastMonth.with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX);
}
public static Date getYearStartDate(Date beginDate, String type){
Calendar cal = Calendar.getInstance();
cal.setTime(beginDate);
cal.set(Calendar.MONTH, 1);
cal.set(Calendar.DAY_OF_MONTH, 1);
if ("begin".equalsIgnoreCase(type)){
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
} else if ("end".equalsIgnoreCase(type)){
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 59);
}
return cal.getTime();
}
/**
* 获取上月的月份
* @return
*/
public static LocalDate lastMonth() {
LocalDate lastMonth = LocalDate.now().plusMonths(-1);
return lastMonth;
}
/**
* 获取当前第几周
* @return
*/
public static String getWeek(){
// 获取当前日期
Date currentDate = new Date();
// 创建一个Calendar实例
Calendar calendar = Calendar.getInstance();
// 将日期设置为当年的第一天
calendar.set(Calendar.DAY_OF_YEAR, 1);
// 获取星期几(1表示星期日,2表示星期一,以此类推)
int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
// 将日期设置为当前日期
calendar.setTime(currentDate);
// 获取年份
int year = calendar.get(Calendar.YEAR);
// 获取一年中的第几天
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
// 计算当前日期是第几周
int currentWeek = (dayOfYear + (firstDayOfWeek - 1)) / 7 + 1;
if(currentWeek<2){
return year+"年第1周";
}else{
// 输出结果
System.out.println(year+"年第" + currentWeek + "周");
return year+"年第" + (currentWeek-1) + "周";
}
}
//获取相差天数
public static int getDay(String star,String end){
String[] star1=star.split("-");
String[] end1=end.split("-");
int days=0;
if(Integer.parseInt(star1[0])<Integer.parseInt(end1[0])){
for(int i=Integer.parseInt(star1[0]);i<Integer.parseInt(end1[0]);i++){
//计算是否是瑞年
if(i%4==0&&i%100!=0||i%400==0){
days+=366;
}else{
days+=365;
}
}
}
//得到开始那一年已过去的日期
int starday=days(star1[0],star1[1],star1[2]);
//得到结束那一年已过去的日期
int endday=days(end1[0],end1[1],end1[2]);
//减去开始那一年已过去的日期,加上结束那一年已过去的日期
days=days-starday+endday;
return days;
}
//获取天数
public static int days(String year,String month,String day){
int days=0;
int nowyear=Integer.parseInt(year);
int[] monthday={0,31,28,31,30,31,30,31,31,30,31,30,31};
int[] monthday1={0,31,29,31,30,31,30,31,31,30,31,30,31};
boolean flag=true;
if(nowyear%4==0&&nowyear%100!=0||nowyear%400==0){
}else{
flag=false;
}
for(int i=0;i<Integer.parseInt(month);i++){
if(flag){
days+=monthday1[i];
}else{
days+=monthday[i];
}
}
days+=Integer.parseInt(day);
return days;
}
/**
* 获得近一年的开始时间和结束时间
* @return
*/
public static Map getYearTRange(){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Map condition=new LinkedHashMap();
Calendar calendar = Calendar.getInstance();
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
calendar.set(Calendar.HOUR_OF_DAY,24);
condition.put("endDate",df.format(calendar.getTime()));
calendar.set(Calendar.HOUR_OF_DAY,-8640);
condition.put("startDate",df.format(calendar.getTime()));
return condition;
}
/**
* 获取某个时间段内所有日期
* @param begin
* @param end
* @return
*/
public static List<String> getDayBetweenDates(String begin, String end) {
Date dBegin = parse(begin);
Date dEnd = parse(end);
List<String> lDate = new ArrayList<String>();
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM");
lDate.add(sd.format(dBegin));
Calendar calBegin = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calEnd.setTime(dEnd);
// 测试此日期是否在指定日期之后
while (dEnd.after(calBegin.getTime())) {
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
calBegin.add(Calendar.DAY_OF_MONTH, 1);
if(!lDate.contains(sd.format(calBegin.getTime()))){
lDate.add(sd.format(calBegin.getTime()));
}
}
if(CollectionUtils.isNotEmpty(lDate)){
lDate.remove(0);
}
return lDate;
}
/**
* 日期解析
* @param date
* @return
*/
public static Date parse(String date) {
try {
return new SimpleDateFormat("yyyy-MM").parse(date);
}
catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
10-11
1740
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
10-27
5806
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
05-14
128
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
05-24
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交