C#利用时间和随即字符串创建唯一的订单编号
使用RNGCryptoServiceProvider类创建唯一的最多8位数字符串,再在前面拼接上年月日时分秒产生的字符串,最大限度的保证生成的字符串是唯一的。
大家也可以根据自己的需求修改,日期可以取值到毫秒,这样更能保证生成的字符串是唯一的。
privatestaticstringGetUniqueKey() { intmaxSize=8; intminSize=5; char[]chars=newchar[62]; stringa; a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; chars=a.ToCharArray(); intsize=maxSize; byte[]data=newbyte[1]; RNGCryptoServiceProvidercrypto=newRNGCryptoServiceProvider(); crypto.GetNonZeroBytes(data); size=maxSize; data=newbyte[size]; crypto.GetNonZeroBytes(data); StringBuilderresult=newStringBuilder(size); foreach(bytebindata) { result.Append(chars[b%(chars.Length-1)]); } returnresult.ToString(); }
然后调用方法,如下做了演示,每次产生的结果都不一样
for(inti=0;i<10;i++) { stringstr=string.Format("{0}{1}",DateTime.Now.ToString("yyyyMMddHHmmss"),GetUniqueKey()); Console.WriteLine(str); } Console.ReadKey();