workday函数 java_Java常用日期处理类DateHandler.java代码

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:23

public 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

info="plaint3.gif";

}

if (overDay

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);

else

strmonth = 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));}}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值