超实用的日期操作工具类

超实用的日期操作工具类

首页体育竞技Last Year更新时间:2024-04-29
背景

相信大家在开发中会遇到日期操作相关的需求吧,下边是我整理编写的工具类,底层使用的是jode-time。也有很多其他优秀的日期操作工具,大家各取所需即可。

1首先需要引入jode-time

<dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> </dependency>

2 DateUtils2.1 目录

public class DateUtils { /** * 获取上周的日期 * @param date * @return */ public static String getPreWeekDate(String date){ DateTime instance = new DateTime(date); return instance.plusWeeks(-1).toString("yyyy-MM-dd"); } /** * 获取前/后几周的日期 * @param weekNum 正数 后几周 * 负数 前几周 * @param date * @return */ public static String getMultWeekDate(String date,int weekNum){ DateTime instance = new DateTime(date); return instance.plusWeeks(weekNum).toString("yyyy-MM-dd"); } /** * 获取前一天的日期 * @return */ public static String getPreDayDate(String date){ DateTime instance = new DateTime(date); return instance.plusDays(-1).toString("yyyy-MM-dd"); } /** * 获取前/后几天的日期 * @return */ public static String getMultDayDate(String date,int weekNum){ DateTime instance = new DateTime(date); return instance.plusDays(weekNum).toString("yyyy-MM-dd"); } /** * 获取年 * @return */ public static int getYear(String date){ DateTime instance = new DateTime(date); return instance.getYear(); } /** * 获取周对应的年 * @return */ public static int getWeekYear(String date){ DateTime instance = new DateTime(date); return instance.getWeekyear(); } /** * 获取周 * @return */ public static int getWeek(String date){ DateTime instance = new DateTime(date); return instance.getWeekOfWeekyear(); } /** * 获取月 * @return */ public static int getMonth(String date){ DateTime instance = new DateTime(date); return instance.getMonthOfYear(); } /** * 获取指定日期所在周的第一天(默认一周的第一天是星期一) * @param date * @return */ public static String firstDayOfWeek(String date){ DateTime instance = new DateTime(date); return instance.dayOfWeek().withMinimumValue().toString("yyyy-MM-dd"); } /** * 获取指定日期所在周的最后一天 * @param date * @return */ public static String lastDayOfWeek(String date){ DateTime instance = new DateTime(date); return instance.dayOfWeek().withMaximumValue().toString("yyyy-MM-dd"); } /** * 获取指定日期所在月的第一天 * @param date * @return */ public static String firstDayOfMonth(String date){ DateTime instance = new DateTime(date); return instance.dayOfMonth().withMinimumValue().toString("yyyy-MM-dd"); } /** * 获取指定日期所在月的最后一天 * @param date * @return */ public static String lastDayOfMonth(String date){ DateTime instance = new DateTime(date); return instance.dayOfMonth().withMaximumValue().toString("yyyy-MM-dd"); } /** * 获取指定日期所在年的第一天 * @param date * @return */ public static String firstDayOfYear(String date){ DateTime instance = new DateTime(date); return instance.dayOfYear().withMinimumValue().toString("yyyy-MM-dd"); } /** * 获取指定日期所在年的第一天 * @param date * @return */ public static String lastDayOfYear(String date){ DateTime instance = new DateTime(date); return instance.dayOfYear().withMaximumValue().toString("yyyy-MM-dd"); } /** * 获取时间范围内所有年集合 * @param beginDate * @param endDate * @return */ public static List<String> betweenYearStrList(String beginDate, String endDate){ List<String> resultList = new ArrayList<>(); DateTime beginDateTime = DateTime.parse(beginDate); DateTime endDateTime = DateTime.parse(endDate); if(beginDateTime.isAfter(endDateTime)){ return null; } try { int beginYear = new DateTime(beginDate).getYear(); int endYear = new DateTime(endDate).getYear(); resultList.add(String.valueOf(beginYear)); while(beginYear<endYear){ beginYear ; resultList.add(String.valueOf(beginYear)); } }catch (Exception e){ e.printStackTrace(); } return resultList; } /** * 获取指定时间段内的所有日期(左闭右闭) * @param beginDate * @param endDate * @return */ public static List<String> betweenDateList(String beginDate, String endDate){ List<String> resultList = new ArrayList<>(); try { DateTime beginDateTime = DateTime.parse(beginDate); DateTime endDateTime = DateTime.parse(endDate); if(beginDateTime.isAfter(endDateTime)){ return null; } resultList.add(beginDateTime.toString("yyyy-MM-dd")); while(beginDateTime.isBefore(endDateTime)){ beginDateTime = beginDateTime.plusDays(1); resultList.add(beginDateTime.toString("yyyy-MM-dd")); } }catch (Exception e){ e.printStackTrace(); } return resultList; } /** * 获取指定日期所在周,指定星期的日期 * @param year 年 * @param week 周 * @param weekNum 星期 * @return */ public static String getDateByWeekDate(String date,int weekNum){ return new DateTime(date).withDayOfWeek(weekNum).toString("yyyy-MM-dd"); } /** * 获取指定日期所在月,指定天的日期 * @param year 年 * @param week 周 * @param weekNum 星期 * @return */ public static String getDateByMonthDate(String date,int dayNum){ return new DateTime(date).withDayOfMonth(dayNum).toString("yyyy-MM-dd"); } /** * 获取指定日期所在年,指定天的日期 * @param year 年 * @param week 周 * @param weekNum 星期 * @return */ public static String getDateByYearDate(String date,int dayNum){ return new DateTime(date).withDayOfYear(dayNum).toString("yyyy-MM-dd"); } /** * 获取指定年周指定星期的日期 * @param year 年 * @param week 周 * @param weekNum 星期 * @return */ public static String getDateByYearAndWeek(int year,int week,int weekNum){ return new DateTime().withWeekyear(year).withWeekOfWeekyear(week).withDayOfWeek(weekNum).toString("yyyy-MM-dd"); } /** * 获取指定年季最后一天的日期 * @param year * @param month * @return */ public static String getDateByYearAndSeason(int year,int season){ int month = 0; switch (season){ case 1: month = 3; break; case 2: month = 6; break; case 3: month = 9; break; case 4: month = 12; break; } return new DateTime().withYear(year).withMonthOfYear(month).dayOfMonth().withMaximumValue().toString("yyyy-MM-dd"); } /** * 获取指定年月第一天的日期 * @param year * @param month * @return */ public static String getFirstDateByYearAndMonth(int year,int month){ return new DateTime().withYear(year).withMonthOfYear(month).dayOfMonth().withMinimumValue().toString("yyyy-MM-dd"); } /** * 获取指定时间段,所有周几的集合 * @param year * @param month * @return */ public static List<String> getWeekDayList(String beginDate, String endDate,int weekNum) { DateTime sdate = new DateTime(beginDate); DateTime edate = new DateTime(endDate); CopyOnWriteArrayList<String> dates = new CopyOnWriteArrayList<>(); List<String> dateList = DateUtils.betweenDateList(beginDate, endDate); for (String date : dateList) { String dateByWeekDate = DateUtils.getDateByWeekDate(date, weekNum); DateTime var1 = new DateTime(dateByWeekDate); if(var1.isAfter(sdate)&&var1.isBefore(edate)){ if(!dates.contains(dateByWeekDate)){ dates.add(dateByWeekDate); } } } return dates; } }

后续方法更新中。。。

您的赞和关注是对我最大的肯定,希望大家多多支持,谢谢大家。

,
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved