因为生成订单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

生成ID模板:年月日时分秒+6位自增码的更多相关文章

  1. C# 版本的 计时器类:精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出

    class TimeCount { // 临时变量,存放当前类能表示的最大年份值 ; /// <summary> /// 获取毫秒能表示的最大年份数 /// </summary> ...

  2. Sql 中获取年月日时分秒的函数

    getdate():获取系统当前时间 dateadd(datepart,number,date):计算在一个时间的基础上增加一个时间后的新时间值,比如:dateadd(yy,30,getdate()) ...

  3. 年月日时分秒毫秒+随机数getSerialNum

    package com.creditharmony.apporveadapter.core.utils; import java.io.ByteArrayInputStream; import jav ...

  4. js获取当前时间的年月日时分秒以及时间的格式化

    1.获取当前时间 var myDate = new Date(); 2.获取时间中的年月日时分秒 myDate.getYear(); // 获取当前年份(2位) myDate.getFullYear( ...

  5. nginx日志修改时间格式为年月日时分秒

    先解除这段注释,使用自定义日志格式 $time_iso8601 生成格式:--20T09::+: $time_local 生成格式: /Apr/::: + 还是选择年月日时分秒看起来舒服一点

  6. Swift3.0 iOS获取当前时间 - 年月日时分秒星期

    Swift3.0 iOS获取当前时间 - 年月日时分秒星期func getTimes() -> [Int] { var timers: [Int] = [] // 返回的数组 let calen ...

  7. H面试程序(1)编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的 下一秒

    编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒. 如输入 2004 年 12 月 31 日 23 时 59 分 59 秒,则输出 2005年 1 月 1 日 0 时 0 分 0 秒. ...

  8. [置顶] java得到前一个月的年月日时分秒

    import java.util.Calendar; /** * 得到前一个月的年月日时分秒 * @author Mr.hu * 2013-6-28上午12:00:35 * Class Explain ...

  9. sql server获取当前年月日 时分秒

    获取当前年月日(字符串): ),) 获取当前时间的时分秒(':'隔开): ),) 将年月日时分秒拼接成一条字符串: ),)),),':','')

随机推荐

  1. linux UART串口驱动开发文档

    转:http://www.360doc.com/content/10/0417/18/829197_23519037.shtml linux UART串口驱动开发文档时间:2010-01-09 14: ...

  2. postgres10配置huge_pages

    操作系统 修改/boot/grub2/grub.cfg 定位到第一个'menuentry 'CentOS Linux',在"linux16 /vmlinuz"最后面添加 numa= ...

  3. Anaconda安装Graphviz, mac下Graphviz安装, pcharm中调用pycharm, Graphviz典型例子

    mac下的Graphviz安装及使用 2017年10月13日 13:30:07 阅读数:7495 一.安装 Graphviz http://www.graphviz.org/ mac用户建议直接用ho ...

  4. logback中打印sql语句

    To log SQL statements for particular mybatis mapper set DEBUG (TRACE to see query parameters and res ...

  5. pyPdf - 用Python方便的处理PDF文档

    pyPdf库 ( http://pybrary.net/pyPdf/ ) ,操作起来相当直接易懂,把代码贴在这儿,做个记录.  1 from pyPdf import PdfFileWriter, P ...

  6. linux:ls、ls -l、ls -al区别 示例

    linux:ls.ls -l.ls -al区别 示例 比如test文件夹下有一个test文件.一个.文件夹.一个..文件夹. 则,执行三个命令后,显示效果如下: [root@linuxserver t ...

  7. 百度编辑器同一id重复调用不能生效的办法

    在使用js 调用表单组件模板的时候,表单内有一个编辑框 第一次调出的时候,百度编辑器正常显示,关闭后,再打开,百度编辑器不能显示 原因:第一次使用的时候, UE.getEditor('node_con ...

  8. java 二维码编码解码

    做一个小项目的时候写了个二维码编码和解码的小工具,感觉可能用得到,有兴趣的朋友可以看下 再次之前,徐需要用到google的zxing相关的jar包,还有javax相关包 以上为可能用到的jar pac ...

  9. phpstorm快速跳转到错误行

    phpstorm的快捷键,在网上可以搜索出很多,唯有“快速跳到错误行”的快捷键几乎搜索不出来. 看着错误提示,要一行一行的用眼睛去看,心累. 贴在这里,随时取用,再也不怕忘记了. Shift + F2 ...

  10. Maven Dependencies 不见了

    解决办法: 1. 选中项目 --> 右键 --> Maven --> Disable Maven Nature 此时,右键菜单中将隐藏[Maven]菜单选项 2. 选中项目 --&g ...