java 日期计算工具类,实现两个日期间,汇总天时分等,一般用于考勤计算


/**
 * 
 * 功能作用:
 * 日期计算
 * @version:      1.0
 * @create date: 2014-2-26
 * @author:      lili
 * @remark:
 */
public class DateSum {
    public static void main(String[] args) {
        // String tmp = "21:52:11";
        // tmp = tmp.substring(0,tmp.indexOf(":"));
        // System.out.println(tmp);
        //        
        // int t = Integer.parseInt(tmp);
        // int day = t/8;
        // int t2 = t%8;
        // System.out.println(day+"天"+t2+"小时");

//        String str1 = "0天8时5分0秒";
//        String str2 = "1天0时0分1秒";
//        String sum = dateSum(str1, str2);
//        System.out.println(sum);
        
        
        
        
        String str = getTimeCa("5","17天9时35分26秒");//5-17天9时35分26秒
        System.out.println(str);
    }
    
    
    private static String getTimeCa(String yearH,String yearHUse){
        if(null == yearH || "".equals(yearH) || yearH.equalsIgnoreCase("null") || "0".equals(yearH)){
            if(null == yearHUse || "".equals(yearHUse) || yearHUse.equalsIgnoreCase("null") || "0".equals(yearHUse)){
                return "";
            }else{
                return "-"+yearHUse;
            }
        }
        String str = "";
        
        String dayStr2 = DateSum.getDayNum(yearHUse);
        String hStr2 = DateSum.getHnum(yearHUse);
//        String mStr2 = DateSum.getMnum(yearHUse);
//        String sStr2 = DateSum.getSnum(yearHUse);
        int day2 = Integer.parseInt(dayStr2);
        int h2 = Integer.parseInt(hStr2);
        int day = 0;
        int h = 0;
        if(h2>0){
            int day1 = Integer.parseInt(yearH);
            day1 = day1 - 1;
            int h1 = 7;//7  工作小时
            day = day1 - day2;
            h = h1 - h2;
        }else{
            int day1 = Integer.parseInt(dayStr2);
            day = day1 - day2;
        }
        str = day +"天";
        if(h >0){
            str += h +"小时";
        }
        return str;
        
    }
    
    

    public static String dateSum(String a, String b) {
        if(null == a || "".equals(a.trim()) || a.equalsIgnoreCase("null")
                || "0".equals(a)
        ){
            if(null == b || "".equals(b) || b.equalsIgnoreCase("null") || "0".equals(b) ){
                return "";
            }else{
                return b;
            }
        }
        if(null == b || "".equals(b.trim()) || b.equalsIgnoreCase("null") || "0".equals(b)){
                return a;
        }
            
        String day1 = "0";
        String h1 = "0";
        String m1 = "0";
        String s1 = "0";
        if( a.indexOf("天") == -1){//表示没有找到天
            day1 = a;
        }else{
            day1 = getDayNum(a);
             h1 = getHnum(a);
             m1 = getMnum(a);
             s1 = getSnum(a);
        }
        String day2 = "0";
        String h2 = "0";
        String m2 = "0";
        String s2 = "0";
        if( b.indexOf("天") == -1){//表示没有找到天
            day2 = b;
        }else{
             day2 = getDayNum(b);
             h2 = getHnum(b);
             m2 = getMnum(b);
             s2 = getSnum(b);
        }
        int s = Integer.parseInt(s1) + Integer.parseInt(s2);
        int m = Integer.parseInt(m1) + Integer.parseInt(m2);
        int h = Integer.parseInt(h1) + Integer.parseInt(h2);
        int day = Integer.parseInt(day1) + Integer.parseInt(day2);
        //         
        System.out.println(">>>>111>>>>" + day + "天" + h + "时" + m + "分" + s
                + "秒");
        if (s >= 60) {// 秒
            s = 0;
            m = m + 1;
        }
        if (m >= 60) {// 分
            m = 0;
            h = h + 1;
        }
        if (h >= 7) {// 超过7小时自动统计加1天
            int d1 = h / 7;
            // System.out.println("d1:"+d1);
            h = h % 7;
            // System.out.println("h:"+h);
            day = day + d1;
            // h=0;
        }

        String newStr = day + "天" + h + "时" + m + "分" + s + "秒";
        
        System.out.println(">>>>222>>>>" +newStr);
        return newStr;
    }

    public static String getDayNum(String day) {// 获得天
        // "0天8时5分0秒";
        // String tmp = day.replaceAll("天[0-9]{1,3}时[0-9]{1,3}分[0-9]{1,3}秒",
        // "");
        System.out.println("11111111111111111:"+day);
        String tmp = day.substring(0, day.indexOf("天"));
        return tmp;
    }

    public static String getHnum(String str) {// 获得小时
        // String h1 = str.replaceAll("[0-9]{1,6}天", "");
        // h1 = h1.replace("时[0-9]{1,3}分[0-9]{1,3}秒", "");

        String h1 = str.substring(str.indexOf("天") + 1, str.indexOf("时"));

        return h1;
    }

    public static String getMnum(String str) {// 分
        // String m1 = str.replace("[0-9]{1,6}天[0-9]{1,3}时", "");
        // m1 = m1.replace("分[0-9]{1,3}秒", "");
        String m1 = str.substring(str.indexOf("时") + 1, str.indexOf("分"));
        return m1;
    }

    public static String getSnum(String str) {// 秒
        // String s1 = str.replace("[0-9]{1,6}天[0-9]{1,3}时[0-9]{1,3}分", "");
        // s1 = s1.replace("秒", "");
        String s1 = str.substring(str.indexOf("分") + 1, str.indexOf("秒"));
        return s1;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值