• 生成ID模板:年月日时分秒+6位自增码


    因为生成订单ID、商品ID 或者什么什么ID的,不想用自增,又怕反复,于是就用  年与日时分秒 + 6位自增码 (共计20位长度)来当作ID


    注意:假设你的ID是Long型。就要注意,Long的最大长度为19位,假设直接转的话会有问题,建议改为年月日时分秒+5位随机数


    详细代码:

    private static int sequence = 0;
    	
    	private static int length = 6;
    	
    	/**
    	 * YYYYMMDDHHMMSS+6位自增长码(20位)
    	 * @author shijing
    	 * 2015年6月29日下午1:25:23
    	 * @return
    	 */
    	public static synchronized String getLocalTrmSeqNum() {
    		sequence = sequence >= 999999 ? 1 : sequence + 1;
    		String datetime = new SimpleDateFormat("yyyyMMddHHmmss")
    		.format(new Date());
    		String s = Integer.toString(sequence);
    		return datetime +addLeftZero(s, length);
    	}
    	
    	/**
    	 * 左填0
    	 * @author shijing
    	 * 2015年6月29日下午1:24:32
    	 * @param s
    	 * @param length
    	 * @return
    	 */
    	public static String addLeftZero(String s, int length) {
    		// StringBuilder sb=new StringBuilder();
    		int old = s.length();
    		if (length > old) {
    			char[] c = new char[length];
    			char[] x = s.toCharArray();
    			if (x.length > length) {
    				throw new IllegalArgumentException(
    						"Numeric value is larger than intended length: " + s
    								+ " LEN " + length);
    			}
    			int lim = c.length - x.length;
    			for (int i = 0; i < lim; i++) {
    				c[i] = '0';
    			}
    			System.arraycopy(x, 0, c, lim, x.length);
    			return new String(c);
    		}
    		return s.substring(0, length);
    
    	}

    以下是測试的结果:

    2015070816503700001



  • 相关阅读:
    JavaScript面试库
    JS事件委托的原理和应用
    缓存ABC
    网络模型探究
    持续集成配置之Nuget
    angular应用容器化部署
    微服务随想
    .NET性能优化小技巧
    博客园博客小优化
    Emmet 简介
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7279097.html
Copyright © 2020-2023  润新知