Java开发基础日期类代码详解

2025-05-29 0 39

由于工作关系,很久没更新博客了,今天就给大家带来一篇Java实现获取指定月份的星期与日期对应关系的文章,好了,不多说,我们直接上代码:

一、日期工具类

?

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有所帮助。如有不足之处,欢迎留言指出,小编会及时回复大家并更正。感谢朋友们对快网idc网站的支持!

原文链接:http://blog.csdn.net/l1028386804/article/details/64926588

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java开发基础日期类代码详解 https://www.kuaiidc.com/114525.html

相关文章

发表评论
暂无评论