java中获取⽇期以及由时间⽣成唯⼀主键
SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
public class TimeUtil {
/**
* 获取当前时间的时间戳
* @return
* */
public static String getTimeInMillis() {
long timeInMillis = Instance().getTimeInMillis();
return timeInMillis+"";
}
/**
* 获取位数为7位的随机数
* @return
* */
public static String getRandom() {
Random random = new Random();
int nextInt = Int(9000000);
nextInt=nextInt+1000000;
String str=nextInt+"";
return str;
}
public static String getTimeYearMonthDay() {
Calendar c = Instance();
int (Calendar.YEAR);
int (Calendar.MONTH)+1;
int (Calendar.DAY_OF_MONTH);
int (Calendar.HOUR_OF_DAY);
int (Calendar.MINUTE);
int (Calendar.SECOND);
System.out.println(year+" "+month+" "+day+" "+hh+" "+mi+" "+ss);
return null;
}
/**
* 输⼊⽇期格式,返回格式内的内容,输⼊格式以-分隔
* @param dateFormat
* @return
**/
public static String getTimeYearMonthDay(String dateFormat) {
String[] strNow = new SimpleDateFormat(dateFormat).format(new Date()).toString().split("-");
String str="";
for (String string : strNow) {
str=str+string;
}
return str;
}
/**
* 获得20位的主键值,主键值的格式是13位的当前时间戳加7位的随机数
* @return
**/
public static String getMillPrimaryKey() {
return getTimeInMillis()+getRandom();
}
/**
* 获得21位的主键值,主键值的格式是14位的当前时间加7位的随机数
* @return
**/
public static String getDatePrimaryKey() {
public static String getDatePrimaryKey() {
return getTimeYearMonthDay("yyyyMMddHHmmss")+getRandom();
}
public static void main(String[] args) {
System.out.println(getTimeYearMonthDay("yyyyMMddHHmmss"));
getTimeYearMonthDay();
System.out.println(getTimeInMillis());
System.out.println(getRandom());
System.out.println(getMillPrimaryKey());
System.out.println(getDatePrimaryKey());
}
}
编译并执⾏程序,运⾏结果如下所⽰:
20181102160254
2018 11 2 16 2 54
1541145774734
3462164
java生成随机数的方法15411457747353009476
201811021602548894323
进程完成,退出码 0
使⽤随机数作为主键的⼀部分,也会有弊端,因为有可能⽣成两个相同的随机数,虽然这种可能性很低,但如果在密集时间内⽣成⼤量的数,则这些数字的重复度会增加。同时,我在思考如何保证在⼀天时间内⽣成唯⼀的7位随机数字,这样组合成的主键(⽇期时间+7位随机数)是唯⼀的。欢迎留⾔评论!