流水号

来源:互联网 发布:oracle数据库容灾方案 编辑:程序博客网 时间:2024/05/18 09:14
private static Calendar pre= null ;
private static int index = 1;  
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");  
 
public static synchronized String getSerialNumber() {  
    Calendar current = Calendar.getInstance();
    System.out.println(current);
    StringBuffer sb = new StringBuffer(sdf.format(current.getTime()));  
    if (pre == null) {//刚进入  
        pre = current;  
        index = 1;  
        sb.append("001");  
    } else {//比较年月日,相同时加1  
        int preYear=pre.get(Calendar.YEAR);//得到年  
        int preMonth=pre.get(Calendar.MONTH)+1;//得到月,因为从0开始的,所以要加1  
        int preDay=pre.get(Calendar.DAY_OF_MONTH);//得到天  
        int currentYear=current.get(Calendar.YEAR);//得到年  
        int currentMonth=current.get(Calendar.MONTH)+1;//得到月,因为从0开始的,所以要加1  
        int currentDay=current.get(Calendar.DAY_OF_MONTH);//得到天  
        if (preYear == currentYear && preMonth==currentMonth && preDay == currentDay) {//当年月日相同时,流水号加1  
            String temp = String.valueOf(++index);  
            int length = temp.length();  
            for(int i = 0; i<3-length;i++) {  
                sb.append("0");  
            }  
            sb.append(temp);  
        } else {//不同时,从001开始  
            pre = current;  
            index = 1;  
            sb.append("001");  
        }  
    }  
    return sb.toString();  
    
    
}
0 0
原创粉丝点击