• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java实现开发基础日期类的示例详解

java 搞代码 4年前 (2022-01-09) 20次浏览 已收录 0个评论

这篇文章主要介绍了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<p style="color:transparent">本文来源gao!%daima.com搞$代*!码网1</p>:起止月份, 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);	}}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java实现开发基础日期类的示例详解
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址