java中获取日期以及由时间生成唯一主键
程序员文章站
2022-05-18 17:29:27
...
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
public class TimeUtil {
/**
* 获取当前时间的时间戳
* @return
* */
public static String getTimeInMillis() {
long timeInMillis = Calendar.getInstance().getTimeInMillis();
return timeInMillis+"";
}
/**
* 获取位数为7位的随机数
* @return
* */
public static String getRandom() {
Random random = new Random();
int nextInt = random.nextInt(9000000);
nextInt=nextInt+1000000;
String str=nextInt+"";
return str;
}
public static String getTimeYearMonthDay() {
Calendar c = Calendar.getInstance();
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;
int day=c.get(Calendar.DAY_OF_MONTH);
int hh=c.get(Calendar.HOUR_OF_DAY);
int mi=c.get(Calendar.MINUTE);
int ss=c.get(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() {
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
15411457747353009476
201811021602548894323
进程完成,退出码 0
使用随机数作为主键的一部分,也会有弊端,因为有可能生成两个相同的随机数,虽然这种可能性很低,但如果在密集时间内生成大量的数,则这些数字的重复度会增加。同时,我在思考如何保证在一天时间内生成唯一的7位随机数字,这样组合成的主键(日期时间+7位随机数)是唯一的。欢迎留言评论!
上一篇: Hive SQL
下一篇: Bootstrap源码解读导航(6)
推荐阅读