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/