根据GUID+DateTime.Now.Ticks生产唯一订单号
1 /// <summary> 2 /// 生成唯一数 3 /// </summary> 4 public class UniqueData 5 { 6 private static object obj = new object(); 7 private static int GuidInt { get { return Guid.NewGuid().GetHashCode(); } } 8 private static string GuidIntStr { get { return Math.Abs(GuidInt).ToString(); } } 9 10 /// <summary>11 /// 生成12 /// </summary>13 /// <param name="mark">前缀</param>14 /// <param name="timeType">时间精确类型 1 日,2 时,3 分,4 秒(默认) </param>15 /// <param name="id">id 小于或等于0则随机生成id</param>16 /// <returns></returns>17 public static string Gener(string mark, int timeType = 4, int id = 0)18 {19 lock (obj)20 {21 var number = mark;22 var ticks = (DateTime.Now.Ticks - GuidInt).ToString();23 int fillCount = 0;//填充位数24 25 number += GetTimeStr(timeType, out fillCount);26 if (id > 0)27 {28 number += ticks.Substring(ticks.Length - (fillCount + 3)) + id.ToString().PadLeft(10, '0');29 }30 else31 {32 number += ticks.Substring(ticks.Length - (fillCount + 3)) + GuidIntStr.PadLeft(10, '0');33 }34 return number;35 }36 }37 38 /// <summary>39 /// 生成40 /// </summary>41 /// <param name="mark">前缀</param>42 /// <param name="timeType">时间精确类型 1 日,2 时,3 分,4 秒(默认)</param>43 /// <param name="id">id 小于或等于0则随机生成id</param>44 /// <returns></returns>45 public static string GenerLong(string mark, int timeType = 4, long id = 0)46 {47 lock (obj)48 {49 var number = mark;50 var ticks = (DateTime.Now.Ticks - GuidInt).ToString();51 int fillCount = 0;//填充位数52 53 number += GetTimeStr(timeType, out fillCount);54 if (id > 0)55 {56 number += ticks.Substring(ticks.Length - fillCount) + id.ToString().PadLeft(19, '0');57 }58 else59 {60 number += GuidIntStr.PadLeft(10, '0') + ticks.Substring(ticks.Length - (9 + fillCount));61 }62 return number;63 }64 }65 66 /// <summary>67 /// 获取时间字符串68 /// </summary>69 /// <param name="timeType">时间精确类型 1 日,2 时,3 分,4 秒(默认)</param>70 /// <param name="fillCount">填充位数</param>71 /// <returns></returns>72 private static string GetTimeStr(int timeType, out int fillCount)73 {74 var time = DateTime.Now;75 if (timeType == 1)76 {77 fillCount = 6;78 return time.ToString("yyyyMMdd");79 }80 else if (timeType == 2)81 {82 fillCount = 4;83 return time.ToString("yyyyMMddHH");84 }85 else if (timeType == 3)86 {87 fillCount = 2;88 return time.ToString("yyyyMMddHHmm");89 }90 else91 {92 fillCount = 0;93 return time.ToString("yyyyMMddHHmmss");94 }95 }96 }
原文出处:https://www.cnblogs.com/ylkbdw/p/9565295.html
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦