zoukankan      html  css  js  c++  java
  • 生成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



  • 相关阅读:
    Bulk insert的用法
    跨服务器与连接不同数据库 不跨服务器连接库存表
    读书笔记(1)
    CSS渲染HTML时的优先级问题
    如何使用as3获得一组不重复的随机数
    flash cs5导出swc到flash builder 4
    转:AS3.0的Dictionary类简介
    转:As3.0中的反射
    Flex 4里的fx、mx以及s命名空间
    yahoo的flash组件
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7279097.html
Copyright © 2011-2022 走看看