首页 > 编程 > C# > 正文

C#利用时间和随即字符串创建唯一的订单编号

2020-01-24 01:13:19
字体:
来源:转载
供稿:网友

使用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();
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表