GUID生产类

久未见 提交于 2019-12-07 00:22:54
public class GUID {

    private static Date date = new Date();
    private static StringBuilder buf = new StringBuilder();
    private static int seq = 0;
    //最好设置成5位,因前段JS无法获取超过14位的长整型,调整为2位递增
    //循环终止数
    private static final int ROTATION = 99;

    public static String getGuid() {
        return UUID.randomUUID().toString();
    }

    public static synchronized long next() {
        if (seq > ROTATION)
            seq = 0;
        buf.delete(0,buf.length());
        date.setTime(System.currentTimeMillis());
        String str = String.format("%1$ty%1$tm%1$td%1$tk%1$tM%1$tS%2$02d",date,seq++);
        return Long.parseLong(str);
    }
}
String.format("%1$ty%1$tm%1$td%1$tk%1$tM%1$tS%2$02d",date,seq++);
//使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
//字符串解释:(以%分割)
%1$ty : %1第一个参数date;t:格式为时间;y:年份。获取第一个参数,时间格式,date的年份
%1$tm : 获取第一个参数,date的月份
%1$td : 获取第一个参数,date在本月中的天数
%1$tk : 获取第一个参数,date在当天的24小时制>时
%1$tM : 分
%1$tS : 秒
%2$02d : 第二个参数seq,类型为数字,保留两位

详情参照:
format格式解析模板学习:
http://blog.csdn.net/thc1987/article/details/17528093
字符串格式相应的字母意思:
http://blog.csdn.net/lonely_fireworks/article/details/7962171/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!