Java开发基础日期类代码详解
由于工作关系,很久没更新博客了,今天就给大家带来一篇Java实现获取指定月份的星期与日期对应关系的文章,好了,不多说,我们直接上代码:
一、日期工具类
packagecom.lyz.date;
importjava.text.SimpleDateFormat;
importjava.util.ArrayList;
importjava.util.Calendar;
importjava.util.Date;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importcom.chwl.medical.utils.common.CollectionUtils;
importcom.chwl.medical.utils.common.ObjectUtils;
/**
*日期工具类,获取指定月份的星期与日期的对应关系
*@authorliuyazhuang
*
*/
publicclassDateUtils{
publicstaticfinalStringDATE_FORMAT="yyyy-MM-dd";
publicenumType{
Year,Month,Date
}
/**
*获取两个时间之间的年份
*@paramstartDate
*@paramendDate
*@return
*/
publicstaticintgetYears(DatestartDate,DateendDate,Typetype){
intcount=0;
CalendarcalBegin=Calendar.getInstance();//获取日历实例
CalendarcalEnd=Calendar.getInstance();
calBegin.setTime(startDate);
calEnd.setTime(endDate);
if(Type.Year==type){
count=calEnd.get(Calendar.YEAR)-calBegin.get(Calendar.YEAR);
}elseif(Type.Month==type){
count=calEnd.get(Calendar.MONTH)-calBegin.get(Calendar.MONTH);
}else{
count=calEnd.get(Calendar.DATE)-calBegin.get(Calendar.DATE);
}
returncount;
}
/**
*获取指定月份的所有日期和星期集合
*@paramoffset:起止月份,0:当前月,1:下一个月;2下下月;以此类推...-1:上一个月;-2:上上一个月;以此类推....
*@paramlength:终止月份,0:当前月,1:下一个月;2下下月;以此类推...-1:上一个月;-2:上上一个月;以此类推....
*@return:日期和星期集合:星期为key日期为value
*/
publicstaticMap>getKeyFromMapByValue(intoffset,intlength){
returngetKeyFromMapByValue(getDateKeyWeekValue(offset,length));
}
/**
*将以date为key,week为value的map转化为以week为key,date为value的map
*@paramdateWeek
*@return
*/
publicstaticMap>getKeyFromMapByValue(MapdateWeek){
Map>weekDate=newHashMap>();
if(!CollectionUtils.isEmpty(dateWeek)){
for(Map.Entryentry:dateWeek.entrySet()){
//获取日期集合
Listlist=weekDate.get(entry.getValue());
if(ObjectUtils.isEmpty(list)){
list=newArrayList();
}
list.add(entry.getKey());
weekDate.put(entry.getValue(),list);
}
}
returnweekDate;
}
/**
*获取指定月份的所有日期和星期集合
*@paramoffset:起止月份,0:当前月,1:下一个月;2下下月;以此类推...-1:上一个月;-2:上上一个月;以此类推....
*@paramlength:终止月份,0:当前月,1:下一个月;2下下月;以此类推...-1:上一个月;-2:上上一个月;以此类推....
*@return:日期和星期集合:日期为key星期为value
*/
publicstaticMapgetDateKeyWeekValue(intoffset,intlength){
Mapmap=newHashMap();
for(inti=offset;i<=length;i++){
Listlist=getAllTheDateOftheMonth(newDate(),i);
for(Datedate:list){
StringweekDay=getDateOfWeek(date);
map.put(parseDateToString(date,DATE_FORMAT),weekDay);
}
}
returnmap;
}
/**
*获取当前日期所在月份的所有日期,指定月份的所有日期
*@paramdate:当前日期
*@paramn:1下一月;2:下下月..以此类推;-1:上月,-2:上上月...以此类推
*@return:返回指定月份的所有日期
*/
publicstaticListgetAllTheDateOftheMonth(Datedate,intn){
Listlist=newArrayList();
Calendarcal=Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DATE,1);
cal.add(Calendar.MONTH,n);
intmonth=cal.get(Calendar.MONTH);
while(cal.get(Calendar.MONTH)==month){
list.add(cal.getTime());
cal.add(Calendar.DATE,1);
}
returnlist;
}
/**
*根据日期获得星期
*@paramdate
*@return
*/
publicstaticStringgetDateOfWeek(Datedate){
//String[]weekDaysName={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
String[]weekDaysCode={"0","1","2","3","4","5","6"};
Calendarcalendar=Calendar.getInstance();
calendar.setTime(date);
intintWeek=calendar.get(Calendar.DAY_OF_WEEK)-1;
if(intWeek<0)intWeek=0;
returnweekDaysCode[intWeek];
}
publicstaticStringparseDateToString(Datedate,StringformatString){
returngetSimpleDateFormat(formatString).format(date);
}
publicstaticSimpleDateFormatgetSimpleDateFormat(StringformatString){
returnnewSimpleDateFormat(formatString);
}
}
二、测试类
packagecom.lyz.date;
importnet.sf.json.JSONObject;
/**
*测试工具类
*@authorliuyazhuang
*
*/
publicclassTestDate{
publicstaticvoidmain(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包下常用的工具类介绍、JavaAtomicInteger类的使用方法详解等以及本站其他相关专题,如有不足之处,欢迎留言指出,小编会及时回复大家并更正。感谢朋友们对毛票票网站的支持!