由于开发的需要,需要生成20位的长度的数字组成的id,首先要满足唯一性,那样的话就需要使用到时间戳来生成,java生成的时间戳是毫秒级的,理论上还是会发生产生相同的id,这是一件很头疼的一件事。
1、解决思路一:
在生成的13位长度的时间戳上面加上3位的自曾数
2017+1492764117143+XXX
代码如下:
package my;
import java.text.SimpleDateFormat;
/**
* 获取20位随机数
* 4位年份+13位时间戳+3位随机数
* @author yuyu
*/
public class GetTime {
public static void main(String[] args) {
//调用生成id方法
System.out.println(getGuid());
}
/**
* 20位末尾的数字id
*/
public static volitale int Guid=100;
public static String getGuid() {
GetTime.Guid+=1;
long now = System.currentTimeMillis();
//获取4位年份数字
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy");
//获取时间戳
Str