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



  • 相关阅读:
    如何选择Html.RenderPartial和Html.RenderAction
    [转]使用 HTML5 WebSocket 构建实时 Web 应用
    基于.NET平台常用的框架整理
    0303
    XMLHTTP
    0120如何合并两个使用 System.Xml 使用 Visual C#.NET 的 XML 文档中的数据
    后台动态创建datatable0115
    笔记1126ASP.NET面试题(转)
    笔记1015
    数组与ARRAYLIST的关系与区别(转)
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7279097.html
Copyright © 2011-2022 走看看