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

网友投稿 229 2023-03-26


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:起止月份, 0:当前月, 1:下一个月; 2下下月; 以此类推... -1:上一个月; -2:上上一个月 ; 以此类推....

* @param length:终止月份, 0:当前月, 1:下一个月; 2下下月; 以此类推... -1:上一个月; -2:上上一个月 ; 以此类推....

* @return:日期和星期集合:星期为key 日期为value

*/

public static Map> 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> getKeyFromMapByValue(Map dateWeek){

Map> weekDate = new HashMap>();

if(!CollectionUtils.isEmpty(dateWeek)){

for(Map.Entry entry : dateWeek.entrySet()){

//获取日期集合

List list = weekDate.get(entry.getValue());

if(ObjectUtils.isEmpty(list)){

list = new ArrayList();

}

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 getDateKeyWeekValue(int offset, int length){

Map map = new HashMap();

for(int i = offset; i <= length; i++){

List 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 getAllTheDateOftheMonth(Date date, int n) {

List list = new ArrayList();

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",JJWgxTxZ

"JJWgxTxZ2017-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"http://,

"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类的使用方法详解等以及本站其他相关专题,如有不足之处,欢迎留言指出,会及时回复大家并更正。感谢朋友们对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Maven学习教程之搭建多模块企业级项目
下一篇:vue组件之Alert的实现代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~