前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单介绍订单号或者流水号的生成方法

简单介绍订单号或者流水号的生成方法

作者头像
小小鱼儿小小林
发布2020-06-23 16:31:29
5.6K0
发布2020-06-23 16:31:29
举报
文章被收录于专栏:灵儿的笔记

一般订单号或者流水号等可能在一些平台会用到,然后我就简单的介绍一个我自己生成订单号和流水号的一个方法吧,如果程序有问题或者你有更好的生成办法,欢迎留言,留下你的文章链接,我们一起学习和进步哈。

方法简介:

一般订单号或者流水号的生成,是时间戳+随机数(或者自己写的算法生成),或者是时间戳+订单类型+随机数

比如在A平台付款的,订单类型就是0001,B平台付款的就是0002,总之可以自己想怎么定义就怎么定义,

这里我介绍的是时间戳包括秒(14位)+随机6位数

时间戳生成方法:

这里就不多解释了,相信你写的项目都会用到生成时间的

代码语言:javascript
复制
    /**
     * 获取YYYY-MM-DD HH:mm:ss格式
     * @return
     */
    public static String getTime() {
        SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("时间戳:"+sdfTime.format(new Date()));
        return sdfTime.format(new Date());
    }

但是生成的时间是xxxx-xx-xx xx:xx:xx带 - 和 冒号的,我们要把它去掉,相信去掉的方法有很多,我这里用的是正则去掉的

代码语言:javascript
复制
getTime().replaceAll("[[\\s-:punct:]]", "")

有的小伙伴们可能会说,如果一秒+随机数的话,并发量如果很大的话,可能会重复,如果是这样的话,大家可以再在将时间精确到毫秒,如下代码,毫秒+随机数 还是有重复的话,可以再在将随机数扩大到8位10位这样,如果这样在毫秒级别还能重复,那你的并发量是有多大,这么大的企业,自己可以写一个生成订单号的算法了吧,小白只能膜拜大佬了,请问可以招我入职吗

代码语言:javascript
复制
    /**
     * 获取YYYY-MM-DD HH:mm:ss:SS格式 精确到毫秒
     * @return
     */
    public static String getTime() {
        SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
        System.out.println("时间戳:"+sdfTime.format(new Date()));
        return sdfTime.format(new Date());
    }

随机6位数生成方法:

这里用到的是java.util.Random类 的Random()方法的nextInt()方法,

讲到这里,就得讲一下 java.lang.Math 类 的Math.random() 方法

区别和联系,其实这两个都是能够生成随机数的, java.util.Random类中的nextXxxx系列方法生成0-n的随机数; Math.random() 方法生成[0, 1)范围内的double类型随机数,如果要生成[0,n)范围的,只要乘一个 (n-1)就可以啦 还有最重要的一点,Math.random()是线程安全的,多线程环境也能使用,具体的区别我这里就不多讲了,大家也可以百度这两者之间的区别,比如可以参考一下这篇文章:https://blog.csdn.net/u012099869/article/details/50394644

代码语言:javascript
复制
    /**
     * 随机生成六位数验证码
     * @return
     */
    public static int getRandomNum(){
        Random r = new Random();
        return r.nextInt(900000)+100000;//(int)(Math.random()*999999)
    }

生成订单号如图所示

精确到秒:前面14位是时间,后面6位随机生成

精确到毫秒:前面17位是时间,后面6位是随机生成

生成订单号的demo代码可以下载:(只有一个java文件)

https://download.csdn.net/download/qq_27471405/10696399

参考文章:

https://blog.csdn.net/u012099869/article/details/50394644

感谢原作者的分享,让技术人能够更快的解决问题

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/09/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法简介:
    • 时间戳生成方法:
      • 随机6位数生成方法:
        • 生成订单号如图所示
        相关产品与服务
        验证码
        腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档