据时间生成唯一序列ID

据时间生成唯一序列ID

/**
 * <html>
 * <body>
 *  <P> Copyright 1994 JsonInternational</p>
 *  <p> All rights reserved.</p>
 *  <p> Created on 19941115</p>
 *  <p> Created by Jason</p>
 *  </body>
 * </html>
 */
package cn.ucaner.alpaca.framework.utils.sequence;

import java.text.DecimalFormat;
import java.text.FieldPosition;
import java.text.Format;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
* @Package:cn.ucaner.common.utils.sequence   
* @ClassName:GenerateSequenceUtil   
* @Description:   <p> 根据时间生成唯一序列ID<br>
*                 时间精确到秒,ID最大值为99999且循环使用</p>
* @Author: - Jason 
* @CreatTime:2017年10月26日 上午10:44:23   
* @Modify By:   
* @ModifyTime:  
* @Modify marker:   
* @version    V1.0
 */
public class GenerateSequenceUtil {
    
    /**
     * 
     */
    private static final FieldPosition HELPER_POSITION = new FieldPosition(0);
    
    /** 时间:精确到秒 */
    private final static Format dateFormat = new SimpleDateFormat("YYYYMMddHHmmss");
    
    private final static NumberFormat numberFormat = new DecimalFormat("00000");
    
    private static int seq = 0;
     
    private static final int MAX = 99999;
    
    public static synchronized String generateSequenceNo() {
         
        Calendar rightNow = Calendar.getInstance();
       
        StringBuffer sb = new StringBuffer();
 
        dateFormat.format(rightNow.getTime(), sb, HELPER_POSITION);
 
        numberFormat.format(seq, sb, HELPER_POSITION);
 
        if (seq == MAX) {
            seq = 0;
        } else {
            seq++;
        }
 
        return sb.toString();
    }
}

猜你喜欢

转载自www.cnblogs.com/jasonandy/p/9184848.html
今日推荐