生成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
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步