打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java常用日期处理类DateHandler.java代码
userphoto

2017.04.05

关注

java日期计算的函数集,写成一个类文件,方便Java爱好者调用,这个类中包括了一年中的季度计算,计算是否是季度末,getDateFromNow计算从现在开始几天后的时间,getNowForFileName得到当前时间,用于文件名,没有特殊字符,使用yyyyMMddHHmmss格式,并要以比较日期,比较日期,与现在-N天的日期对比、与现在的日期对比、与现在的日期对比  得到天数、与现在的日期对比  得到信息、计算两个日期间相隔的日子、获取今天的日期的字符串、获取当前月份、计算员工工作天数等,有兴趣的可参考以下Java代码。

package com.gootrip.util;import java.util.*;import java.text.*;public class DateHandler {public DateHandler() {}public static int openDay=5;private String iDate="";private int iYear;private int iMonth;private int iDay;// iDateTime = 2002-01-01 23:23:23public void setDate(String iDateTime){this.iDate=iDateTime.substring(0,10);}public String getDate(){return this.iDate;}public int getYear(){iYear=Integer.parseInt(iDate.substring(0,4));return iYear;}public int getMonth(){iMonth=Integer.parseInt(iDate.substring(5,7));return iMonth;}public int getDay(){iDay=Integer.parseInt(iDate.substring(8,10));return iDay;}public static String subDate(String date){return date.substring(0,10);}/*** 计算是否是季度末* @param date* @return*/public static boolean isSeason(String date){int getMonth = Integer.parseInt(date.substring(5,7));boolean sign = false;if (getMonth==3)sign = true;if (getMonth==6)sign = true;if (getMonth==9)sign = true;if (getMonth==12)sign = true;return sign;}/*** 计算从现在开始几天后的时间* @param afterDay* @return*/public static String getDateFromNow(int afterDay){GregorianCalendar calendar = new GregorianCalendar();Date date = calendar.getTime();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)+afterDay);date = calendar.getTime();return df.format(date);}/*** 带格式* @param afterDay* @param format_string* @return*/public static String getDateFromNow(int afterDay, String format_string){Calendar calendar = Calendar.getInstance();Date date = null;DateFormat df = new SimpleDateFormat(format_string);calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + afterDay);date = calendar.getTime();return df.format(date);}/*** 得到当前时间,用于文件名,没有特殊字符,使用yyyyMMddHHmmss格式* @param afterDay* @return* by tim*/public static String getNowForFileName(int afterDay){GregorianCalendar calendar = new GregorianCalendar();SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)+afterDay);Date date = calendar.getTime();return df.format(date);}//==============================================================================//比较日期,与现在-N天的日期对比 -1 0 1//==============================================================================public int getDateCompare(String limitDate,int afterDay){GregorianCalendar calendar = new GregorianCalendar();Date date = calendar.getTime();calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)+afterDay);date = calendar.getTime();//date是新来的天数,跟今天相比的天数
iDate=limitDate;calendar.set(getYear(),getMonth()-1,getDay());Date dateLimit = calendar.getTime();return dateLimit.compareTo(date);}//==============================================================================//比较日期,与现在的日期对比//==============================================================================public int getDateCompare(String limitDate){iDate=limitDate;GregorianCalendar calendar = new GregorianCalendar();calendar.set(getYear(),getMonth()-1,getDay());Date date = calendar.getTime();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date nowDate = new Date();return date.compareTo(nowDate);}//==============================================================================//比较日期,与现在的日期对比 得到天数//==============================================================================public long getLongCompare(String limitDate){iDate=limitDate;GregorianCalendar calendar = new GregorianCalendar();calendar.set(getYear(),getMonth()-1,getDay());Date date = calendar.getTime();long datePP=date.getTime();Date nowDate = new Date();long dateNow = nowDate.getTime();return ((dateNow-datePP)/(24*60*60*1000));}//==============================================================================//比较日期,与现在的日期对比 得到信息//==============================================================================public String getStringCompare(String limitDate,int openDay){iDate=limitDate;GregorianCalendar calendar = new GregorianCalendar();calendar.set(getYear(),getMonth()-1,getDay());Date date = calendar.getTime();long datePP=date.getTime();Date nowDate = new Date();long dateNow = nowDate.getTime();long overDay = ((dateNow-datePP)/(24*60*60*1000));String info="";return info;}//==============================================================================//比较日期,与现在的日期对比 得到信息//==============================================================================public String getPicCompare(String limitDate,int openDay){iDate=limitDate;GregorianCalendar calendar = new GregorianCalendar();calendar.set(getYear(),getMonth()-1,getDay());Date date = calendar.getTime();long datePP=date.getTime();Date nowDate = new Date();long dateNow = nowDate.getTime();long overDay = ((dateNow-datePP)/(24*60*60*1000));String info="";if (overDay>0){info="plaint1.gif";}if (overDay==0){info="plaint2.gif";}if (overDay<0&&overDay>=-openDay){info="plaint2.gif";}if (overDay<-openDay){info="plaint3.gif";}if (overDay<-150){info="plaint3.gif";}return info;}/*** method diffdate 计算两个日期间相隔的日子* @param beforDate 格式:2005-06-20* @param afterDate 格式:2005-06-21* @return*/public static int diffDate(String beforeDate,String afterDate){String[] tt = beforeDate.split("-");Date firstDate = new Date(Integer.parseInt(tt[0]),Integer.parseInt(tt[1])-1,Integer.parseInt(tt[2]));tt = afterDate.split("-");Date nextDate = new Date(Integer.parseInt(tt[0]),Integer.parseInt(tt[1])-1,Integer.parseInt(tt[2]));return (int)(nextDate.getTime()-firstDate.getTime())/(24*60*60*1000);}/*** 获取今天的日期的字符串* @return*/public static String getToday(){Calendar cld=Calendar.getInstance();java.util.Date date=new Date();cld.setTime(date);int intMon=cld.get(Calendar.MONTH)+1;int intDay=cld.get(Calendar.DAY_OF_MONTH);String mons=String.valueOf(intMon);String days=String.valueOf(intDay);if(intMon<10)mons="0"+String.valueOf(intMon);if(intDay<10)days="0"+String.valueOf(intDay);return String.valueOf(cld.get(Calendar.YEAR))+"-"+mons+"-"+days;}/*** 获取当前月份* @return 返回字符串 格式:两位数*/public static String getCurrentMonth(){String strmonth = null;Calendar cld = Calendar.getInstance();java.util.Date date = new Date();cld.setTime(date);int intMon=cld.get(Calendar.MONTH) + 1;if(intMon<10)strmonth = "0" + String.valueOf(intMon);elsestrmonth = String.valueOf(intMon);date = null;return strmonth;}/*** 获取昨天的日期的字符串*/public static String getYestoday(){Calendar cld = Calendar.getInstance();java.util.Date date = new Date();cld.setTime(date);cld.add(Calendar.DATE,-1);int intMon = cld.get(Calendar.MONTH)+1;int intDay = cld.get(Calendar.DAY_OF_MONTH);String mons = String.valueOf(intMon);String days = String.valueOf(intDay);if(intMon < 10)mons="0" + String.valueOf(intMon);if(intDay < 10)days = "0" + String.valueOf(intDay);return String.valueOf(cld.get(Calendar.YEAR)) + "-" + mons + "-" + days;}/*** 此函数用来计算员工的工作天数,如在使用期和离职期该月份的工作日* 输入(离职日期,-1)可得该月工作天数 时间以2002-12-14为准* 输入(入司时间,1)可的该月工作天数*/public static int getWorkDay(String date , int sign){int month=0;int week=0;int workDay=0;Calendar rightNow = Calendar.getInstance();DateHandler dateOver=new DateHandler();dateOver.setDate(date);rightNow.set(rightNow.YEAR,dateOver.getYear());rightNow.set(rightNow.MONTH,dateOver.getMonth()-1);rightNow.set(rightNow.DATE,dateOver.getDay());month = rightNow.get(rightNow.MONTH);while(rightNow.get(rightNow.MONTH)==month){week=rightNow.get(Calendar.DAY_OF_WEEK);if (week==1||week==7){}else{workDay++;System.out.println(rightNow.get(rightNow.DATE));}rightNow.add(rightNow.DATE,sign);}return workDay;}public static void main(String args[]){
System.out.println(DateHandler.isSeason("2002-03-02"));
String strDate = DateHandler.getDateFromNow(0,"yyyy-MM-dd HH:mm:ss");
System.out.println("date:" + strDate);
System.out.println("15:" + strDate.substring(0,16));

Date firstDate = new Date(2006,11,14,18,3,0);
Date nextDate = new Date(2006,11,15,18,2,0);
System.out.println("date's num: " + (int)(nextDate.getTime()-firstDate.getTime())/(24*60*60*1000));
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java编程入门:判断今年是否闰年
java日期操作 及 Timer定时器
Java 计算日期
java入门、java学习:java日期格式处理类,《上》
Java 日期时间
java 日期增加一天
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服