首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

生成唯一 ID 模板:年月日時分秒 + 6 位自增碼

     編輯:關於C++

需求背景

訂單 ID、商品 ID 等不想用資料庫自增,又怕 UUID 太長或重複。採用「年月日時分秒(14位)+ 6位自增序列」共 20 位字符串 ID。

實現要點

  • 靜態變量 sequence 記錄當前序列號,達到 999999 歸 1。
  • 用 SimpleDateFormat("yyyyMMddHHmmss") 獲取時間戳。
  • 左補零將序列號補足 6 位。
  • 方法加 synchronized 保證線程安全。
  • 若 ID 需存入 Long 類型(最大 19 位),建議改用 5 位隨機數或縮短時間格式。

代碼實現

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

注意事項

  • 高併發下單機自增可能不夠,可結合機器 ID 或使用分布式 ID 生成器(如 Snowflake)。
  • 時間精度到秒,同一秒內超過 100 萬次會重複,實際極少見。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved