java 日期类代码_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",

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

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值