由于工作关系,很久没更新博客了,今天就给大家带来一篇Java实现获取指定月份的星期与日期对应关系的文章,好了,不多说,我们直接上代码:
一、日期工具类
java" id="highlighter_145632">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
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);
}
}
|
二、测试类
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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 )));
}
}
|
三、测试结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
{
"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"
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
{
"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有所帮助。如有不足之处,欢迎留言指出,小编会及时回复大家并更正。感谢朋友们对服务器之家网站的支持!
原文链接:http://blog.csdn.net/l1028386804/article/details/64926588