C#利用时间和随即字符串创建唯一的订单编号
程序员文章站
2022-05-14 17:33:15
使用rngcryptoserviceprovider类创建唯一的最多8位数字符串,再在前面拼接上年月日时分秒产生的字符串,最大限度的保证生成的字符串是唯一的。
大家也可以...
使用rngcryptoserviceprovider类创建唯一的最多8位数字符串,再在前面拼接上年月日时分秒产生的字符串,最大限度的保证生成的字符串是唯一的。
大家也可以根据自己的需求修改,日期可以取值到毫秒,这样更能保证生成的字符串是唯一的。
private static string getuniquekey() { int maxsize = 8; int minsize = 5; char[] chars = new char[62]; string a; a = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz1234567890"; chars = a.tochararray(); int size = maxsize; byte[] data = new byte[1]; rngcryptoserviceprovider crypto = new rngcryptoserviceprovider(); crypto.getnonzerobytes(data); size = maxsize; data = new byte[size]; crypto.getnonzerobytes(data); stringbuilder result = new stringbuilder(size); foreach (byte b in data) { result.append(chars[b % (chars.length - 1)]); } return result.tostring(); }
然后调用方法,如下做了演示,每次产生的结果都不一样
for (int i = 0; i < 10; i++) { string str = string.format("{0}{1}", datetime.now.tostring("yyyymmddhhmmss"), getuniquekey()); console.writeline(str); } console.readkey();