C# 生成日期时间数字唯一序号,尾部添加指定位数长度的随机码


用于生成可按日期时间排序的唯一数字序号,可应用于交易流水号,记录主键,单据号码等。
C# Code:
static void Main(string[] args)
{
Console.WriteLine("生成日期时间数字序号,尾部添加指定位数长度的随机码:");
Console.WriteLine("www.csframework.com");
Console.WriteLine("-------------------------------------------");
Console.WriteLine(GetRowID(6, true));
Console.WriteLine(GetRowID(9));
Console.WriteLine(GetRowID(18, true));
Console.ReadLine();
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
{
Console.WriteLine("生成日期时间数字序号,尾部添加指定位数长度的随机码:");
Console.WriteLine("www.csframework.com");
Console.WriteLine("-------------------------------------------");
Console.WriteLine(GetRowID(6, true));
Console.WriteLine(GetRowID(9));
Console.WriteLine(GetRowID(18, true));
Console.ReadLine();
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761

C# Code:
/// <summary>
/// 生成日期时间数字序号,尾部添加指定位数长度的随机码
/// </summary>
/// <param name="randomLen">随机数字长度,如:7, 生成最大9999999的数字</param>
/// <param name="SNSplite">随机数序号签名添加分隔符,如:20200324162034169-0758707</param>
/// <returns></returns>
public static string GetRowID(int randomLen = 7, bool SNSplite = false)
{
//必须暂停线程,避免并发
Thread.Sleep(100);
//拼接基准因子,如:1000000
StringBuilder sb = new StringBuilder("1");
for (int i = 1; i < randomLen; i++) sb.Append("0");
decimal j = decimal.Parse(sb.ToString()) * 9;//生成:9999999
//兼容Int32最大值
if (j > Int32.MaxValue) j = Int32.MaxValue;
int maxInt = (Int32)j;
//生成随机数
string sn = new Random().Next(1, maxInt).ToString().PadLeft(randomLen, '0');
//组合日期时间数字序号
string rowID = DateTime.Now.ToString("yyyyMMddHHmmssfff") + (SNSplite ? "-" : "") + sn;
return rowID;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 生成日期时间数字序号,尾部添加指定位数长度的随机码
/// </summary>
/// <param name="randomLen">随机数字长度,如:7, 生成最大9999999的数字</param>
/// <param name="SNSplite">随机数序号签名添加分隔符,如:20200324162034169-0758707</param>
/// <returns></returns>
public static string GetRowID(int randomLen = 7, bool SNSplite = false)
{
//必须暂停线程,避免并发
Thread.Sleep(100);
//拼接基准因子,如:1000000
StringBuilder sb = new StringBuilder("1");
for (int i = 1; i < randomLen; i++) sb.Append("0");
decimal j = decimal.Parse(sb.ToString()) * 9;//生成:9999999
//兼容Int32最大值
if (j > Int32.MaxValue) j = Int32.MaxValue;
int maxInt = (Int32)j;
//生成随机数
string sn = new Random().Next(1, maxInt).ToString().PadLeft(randomLen, '0');
//组合日期时间数字序号
string rowID = DateTime.Now.ToString("yyyyMMddHHmmssfff") + (SNSplite ? "-" : "") + sn;
return rowID;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761

扫一扫加微信


版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网