由于工作关系,很久没更新博客了,今天就给大家带来一篇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:终止月份, 0:当前月, 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:起止月份, 0:当前月, 1:下一个月; 2下下月; 以此类推... -1:上一个月; -2:上上一个月 ; 以此类推.... * @param length:终止月份, 0:当前月, 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类的使用方法详解等以及本站其他相关专题,如有不足之处,欢迎留言指出,小编会及时回复大家并更正。感谢朋友们对小牛知识库网站的支持!
本文向大家介绍Java web基础学习之开发环境篇(详解),包括了Java web基础学习之开发环境篇(详解)的使用技巧和注意事项,需要的朋友参考一下 Tomcat + Eclipse添加Java EE插件 因为之前进行Java SE学习已经配置了JDK,安装了Eclipse for Java SE,所以选择了在Eclipse上添加插件的方式来配置Web开发环境 Tomcat是免安装版,直接解压即
本文向大家介绍详解Java中的日期类,包括了详解Java中的日期类的使用技巧和注意事项,需要的朋友参考一下 Java 编程语言中时间的处理类有 Date类与 Calendar类。目前官方不推荐使用 Date类,因为其不利于国际化;而是推荐使用 Calendar类,并使用 DateFormat 类做格式化处理。 一、Date 类介绍 Date 表示特定的瞬间,精确到毫秒。 在 JDK 1.1 之前,
随着微服务架构、云计算、单页应用和响应式设计的兴起,Web前端技术发展迅速。当前在网站开发中使用现代前端技术已经是基本形态,你可以基于Canvas、WebGL来开发二三维的H5游戏,也可以使用React Native等框架来开发新一代的移动APP,还可以使用Nodejs等框架来开发桌面应用,还可以开发ChromeAPP(PWA)、微信小程序、以及这几年很流行的WebVR和AR。 对于GIS行业来说
8.1.1 代码介绍 基础统计代码用于加载SiteMonitor JS监测脚本, 是系统收数的基础。 在网页上正确添加基础统计代码后,即可实现系统诸多报表的数据收集。 8.1.2 代码导出 有以下2种方式可导出代码: 新建站点时,保存并导出基础统计代码 已有站点,通过查看后台的 设置 > 统计代码 导出的代码样例 <script> (function(a, e, f, g, b, c, d) {a
本文向大家介绍java数组基础详解,包括了java数组基础详解的使用技巧和注意事项,需要的朋友参考一下 数组 数组(Array):相同类型数据的集合。 Java 数组初始化的两种方法: 静态初始化: 程序员在初始化数组时为数组每个元素赋值; 动态初始化: 数组初始化时,程序员只指定数组的长度,由系统为每个元素赋初值。 数组是否必须初始化 对于这个问题,关键在于要弄清楚数组变量和数组对象的差别。数组
本文向大家介绍Java基础巩固系列包装类代码实例,包括了Java基础巩固系列包装类代码实例的使用技巧和注意事项,需要的朋友参考一下 示意图: 代码: 结果1: true 10 true 结果2: 10 10 12.3 false false null 10 12.3 false 以上所述是小编给大家介绍的Java包装类详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的