Java开发基础日期类代码详解
发布时间:2020-12-14 21:23:27 所属栏目:Java 来源:网络整理
导读:由于工作关系,很久没更新博客了,今天就给大家带来一篇Java实现获取指定月份的星期与日期对应关系的文章,好了,不多说,我们直接上代码: 一、日期工具类 package com.lyz.date;import java.text.SimpleDateFormat;import java.util.ArrayList;import java
由于工作关系,很久没更新博客了,今天就给大家带来一篇Java实现获取指定月份的星期与日期对应关系的文章,好了,不多说,我们直接上代码: 一、日期工具类 package com.lyz.date; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import com.chwl.medical.utils.common.CollectionUtils; import com.chwl.medical.utils.common.ObjectUtils; /** * 日期工具类,获取指定月份的星期与日期的对应关系 * @author liuyazhuang * */ public class DateUtils { public static final String DATE_FORMAT = "yyyy-MM-dd"; public enum Type{ Year,Month,Date } /** * 获取两个时间之间的年份 * @param startDate * @param endDate * @return */ public static int getYears(Date startDate,Date endDate,Type type){ int count = 0; Calendar calBegin = Calendar.getInstance(); //获取日历实例 Calendar calEnd = Calendar.getInstance(); calBegin.setTime(startDate); calEnd.setTime(endDate); if(Type.Year == type){ count = calEnd.get(Calendar.YEAR) - calBegin.get(Calendar.YEAR); }else if(Type.Month == type){ count = calEnd.get(Calendar.MONTH) - calBegin.get(Calendar.MONTH); }else{ count = calEnd.get(Calendar.DATE) - calBegin.get(Calendar.DATE); } return count; } /** * 获取指定月份的所有日期和星期集合 * @param offset:起止月份,0:当前月,1:下一个月; 2下下月; 以此类推... -1:上一个月; -2:上上一个月 ; 以此类推.... * @param length:终止月份,1:下一个月; 2下下月; 以此类推... -1:上一个月; -2:上上一个月 ; 以此类推.... * @return:日期和星期集合:星期为key 日期为value */ public static Map<String,List<String>> getKeyFromMapByValue(int offset,int length){ return getKeyFromMapByValue(getDateKeyWeekValue(offset,length)); } /** * 将以date为key,week为value的map转化为以week为key,date为value的map * @param dateWeek * @return */ public static Map<String,List<String>> getKeyFromMapByValue(Map<String,String> dateWeek){ Map<String,List<String>> weekDate = new HashMap<String,List<String>>(); if(!CollectionUtils.isEmpty(dateWeek)){ for(Map.Entry<String,String> entry : dateWeek.entrySet()){ //获取日期集合 List<String> list = weekDate.get(entry.getValue()); if(ObjectUtils.isEmpty(list)){ list = new ArrayList<String>(); } list.add(entry.getKey()); weekDate.put(entry.getValue(),list); } } return weekDate; } /** * 获取指定月份的所有日期和星期集合 * @param offset:起止月份,1:下一个月; 2下下月; 以此类推... -1:上一个月; -2:上上一个月 ; 以此类推.... * @return:日期和星期集合:日期为key 星期为value */ public static Map<String,String> getDateKeyWeekValue(int offset,int length){ Map<String,String> map = new HashMap<String,String>(); for(int i = offset; i <= length; i++){ List<Date> list = getAllTheDateOftheMonth(new Date(),i); for(Date date: list){ String weekDay = getDateOfWeek(date); map.put(parseDateToString(date,DATE_FORMAT),weekDay); } } return map; } /** * 获取当前日期所在月份的所有日期,指定月份的所有日期 * @param date:当前日期 * @param n:1下一月;2:下下月..以此类推; -1:上月,-2:上上月...以此类推 * @return:返回指定月份的所有日期 */ public static List<Date> getAllTheDateOftheMonth(Date date,int n) { List<Date> list = new ArrayList<Date>(); Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(Calendar.DATE,1); cal.add(Calendar.MONTH,n); int month = cal.get(Calendar.MONTH); while(cal.get(Calendar.MONTH) == month){ list.add(cal.getTime()); cal.add(Calendar.DATE,1); } return list; } /** * 根据日期获得星期 * @param date * @return */ public static String getDateOfWeek(Date date) { //String[] weekDaysName = { "星期日","星期一","星期二","星期三","星期四","星期五","星期六" }; String[] weekDaysCode = { "0","1","2","3","4","5","6" }; Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int intWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; if(intWeek < 0) intWeek = 0; return weekDaysCode[intWeek]; } public static String parseDateToString(Date date,String formatString) { return getSimpleDateFormat(formatString).format(date); } public static SimpleDateFormat getSimpleDateFormat(String formatString) { return new SimpleDateFormat(formatString); } } 二、测试类 package com.lyz.date; import net.sf.json.JSONObject; /** * 测试工具类 * @author liuyazhuang * */ public class TestDate { public static void main(String[] args) { System.out.println(JSONObject.fromObject(DateUtils.getDateKeyWeekValue(-1,1))); System.out.println(JSONObject.fromObject(DateUtils.getKeyFromMapByValue(-1,1))); } } 三、测试结果 { "2017-02-28": "2","2017-04-19": "3","2017-04-17": "1","2017-02-25": "6","2017-04-18": "2","2017-02-24": "5","2017-04-15": "6","2017-02-27": "1","2017-04-16": "0","2017-02-26": "0","2017-04-13": "4","2017-02-21": "2","2017-04-14": "5","2017-02-20": "1","2017-04-11": "2","2017-02-23": "4","2017-04-12": "3","2017-02-22": "3","2017-04-21": "5","2017-04-20": "4","2017-04-08": "6","2017-04-09": "0","2017-04-04": "2","2017-04-05": "3","2017-04-06": "4","2017-04-07": "5","2017-04-01": "6","2017-04-02": "0","2017-04-03": "1","2017-04-10": "1","2017-02-07": "2","2017-02-06": "1","2017-02-09": "4","2017-02-08": "3","2017-03-29": "3","2017-03-25": "6","2017-03-26": "0","2017-03-27": "1","2017-02-01": "3","2017-03-28": "2","2017-03-21": "2","2017-02-03": "5","2017-03-22": "3","2017-02-02": "4","2017-03-23": "4","2017-02-05": "0","2017-03-24": "5","2017-02-04": "6","2017-03-31": "5","2017-03-30": "4","2017-04-23": "0","2017-04-22": "6","2017-02-19": "0","2017-04-25": "2","2017-02-18": "6","2017-04-24": "1","2017-02-17": "5","2017-04-27": "4","2017-04-26": "3","2017-04-29": "6","2017-03-18": "6","2017-04-28": "5","2017-03-19": "0","2017-02-12": "0","2017-03-16": "4","2017-02-11": "6","2017-03-17": "5","2017-02-10": "5","2017-03-14": "2","2017-03-15": "3","2017-02-16": "4","2017-03-12": "0","2017-02-15": "3","2017-03-13": "1","2017-02-14": "2","2017-03-10": "5","2017-02-13": "1","2017-03-11": "6","2017-03-20": "1","2017-03-09": "4","2017-03-08": "3","2017-03-07": "2","2017-03-06": "1","2017-03-05": "0","2017-03-04": "6","2017-03-03": "5","2017-03-02": "4","2017-04-30": "0","2017-03-01": "3" } { "3": [ "2017-04-19","2017-04-12","2017-02-22","2017-04-05","2017-02-08","2017-03-29","2017-02-01","2017-03-22","2017-04-26","2017-03-15","2017-02-15","2017-03-08","2017-03-01" ],"2": [ "2017-02-28","2017-04-18","2017-02-21","2017-04-11","2017-04-04","2017-02-07","2017-03-28","2017-03-21","2017-04-25","2017-03-14","2017-02-14","2017-03-07" ],"1": [ "2017-04-17","2017-02-27","2017-02-20","2017-04-03","2017-04-10","2017-02-06","2017-03-27","2017-04-24","2017-03-13","2017-02-13","2017-03-20","2017-03-06" ],"0": [ "2017-04-16","2017-02-26","2017-04-09","2017-04-02","2017-03-26","2017-02-05","2017-04-23","2017-02-19","2017-03-19","2017-02-12","2017-03-12","2017-03-05","2017-04-30" ],"6": [ "2017-02-25","2017-04-15","2017-04-08","2017-04-01","2017-03-25","2017-02-04","2017-04-22","2017-02-18","2017-04-29","2017-03-18","2017-02-11","2017-03-11","2017-03-04" ],"5": [ "2017-02-24","2017-04-14","2017-04-21","2017-04-07","2017-02-03","2017-03-24","2017-03-31","2017-02-17","2017-04-28","2017-03-17","2017-02-10","2017-03-10","2017-03-03" ],"4": [ "2017-04-13","2017-02-23","2017-04-20","2017-04-06","2017-02-09","2017-02-02","2017-03-23","2017-03-30","2017-04-27","2017-03-16","2017-02-16","2017-03-09","2017-03-02" ] } 总结 本文通过代码示例向大家展示了日期工具类的几种用法,希望对大家学习Java有所帮助。 感兴趣的朋友可以参阅:Java语言Lang包下常用的工具类介绍、Java AtomicInteger类的使用方法详解等以及本站其他相关专题,如有不足之处,欢迎留言指出,小编会及时回复大家并更正。感谢朋友们对编程小技巧网站的支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |