生成20位唯一字符串,前14位是当前年月日时分秒,后6位是随机数

本文介绍如何生成20位的唯一ID字符串,主要由当前时间(14位)和6位随机数组成,确保在高并发场景下的唯一性。
生成一个20位的唯一ID字符串,纯数字

所以就直接采用当前年月日时分秒作为一共ID的主要构成,使用时间就可以构成一共唯一ID了,但有时候同一时间同时下单也会有冲突,所以再添加一共6位随机数。
获取当前时间戳(14位),生成6位随机数,2者做拼接。

package com.example;

import java.util.Calendar;
import java.util.Random;


import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Calendar;
import java.util.Random;

public class UniqueIdGenerator {

    /**
     * 生成一个20位的唯一ID字符串,纯数字
     *
     * @return String 唯一的ID
     */
    //    一个常见的方法是使用当前的时间戳再加上一些随机数。但是,时间戳通常只有14位(年月日时分秒),所以需要额外增加6位随机数(随机数是在时间戳的右边拼接的)。

    public static String generateUniqueID() {
        // 创建Calendar对象
        Calendar calendar = Calendar.getInstance();

        // 获取当前时间
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DATE);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);

        // 拆分时间,去除分隔符,补0格式化
        String time = String.format("%04d", year)
                + String.format("%02d", month)
                + String.format("%02d", day)
                + String.format("%02d", hour)
                + String.format("%02d", minute)
                + String.format("%02d", second);

        // 生成6位的随机数
        int randomNumber = new Random().nextInt(900000) + 100000;

        // 合并时间和随机数,生成20位的唯一ID
        String uniqueID = time + randomNumber;
        return uniqueID;
    }

    public static void main(String[] args) {
        // 生成一个唯一ID并打印
        String uniqueID = generateUniqueID();
        System.out.println("生成的唯一ID: " + uniqueID);
    }

}




评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MAPLE__f

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值