訂單 ID、商品 ID 等不想用資料庫自增,又怕 UUID 太長或重複。採用「年月日時分秒(14位)+ 6位自增序列」共 20 位字符串 ID。
sequence 記錄當前序列號,達到 999999 歸 1。SimpleDateFormat("yyyyMMddHHmmss") 獲取時間戳。synchronized 保證線程安全。private static int sequence = 0;
private static final int LENGTH = 6;
public static synchronized String getLocalTrmSeqNum() {
sequence = sequence >= 999999 ? 1 : sequence + 1;
String datetime = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
String seqStr = String.format("%06d", sequence);
return datetime + seqStr;
}
20150708165037000001