C#如何生成唯一订单号
作者:一路狂奔的我 时间:2022-11-26 16:32:54
本文实例为大家分享了C#生成唯一订单号的具体代码,供大家参考,具体内容如下
根据GUID+DateTime.Now.Ticks生产唯一订单号
/// <summary>
/// 生成唯一数
/// </summary>
public class UniqueData
{
private static object obj = new object();
private static int GuidInt { get { return Guid.NewGuid().GetHashCode(); } }
private static string GuidIntStr { get { return Math.Abs(GuidInt).ToString(); } }
/// <summary>
/// 生成
/// </summary>
/// <param name="mark">前缀</param>
/// <param name="timeType">时间精确类型 1 日,2 时,3 分,4 秒(默认) </param>
/// <param name="id">id 小于或等于0则随机生成id</param>
/// <returns></returns>
public static string Gener(string mark, int timeType = 4, int id = 0)
{
lock (obj)
{
var number = mark;
var ticks = (DateTime.Now.Ticks - GuidInt).ToString();
int fillCount = 0;//填充位数
number += GetTimeStr(timeType, out fillCount);
if (id > 0)
{
number += ticks.Substring(ticks.Length - (fillCount + 3)) + id.ToString().PadLeft(10, '0');
}
else
{
number += ticks.Substring(ticks.Length - (fillCount + 3)) + GuidIntStr.PadLeft(10, '0');
}
return number;
}
}
/// <summary>
/// 生成
/// </summary>
/// <param name="mark">前缀</param>
/// <param name="timeType">时间精确类型 1 日,2 时,3 分,4 秒(默认)</param>
/// <param name="id">id 小于或等于0则随机生成id</param>
/// <returns></returns>
public static string GenerLong(string mark, int timeType = 4, long id = 0)
{
lock (obj)
{
var number = mark;
var ticks = (DateTime.Now.Ticks - GuidInt).ToString();
int fillCount = 0;//填充位数
number += GetTimeStr(timeType, out fillCount);
if (id > 0)
{
number += ticks.Substring(ticks.Length - fillCount) + id.ToString().PadLeft(19, '0');
}
else
{
number += GuidIntStr.PadLeft(10, '0') + ticks.Substring(ticks.Length - (9 + fillCount));
}
return number;
}
}
/// <summary>
/// 获取时间字符串
/// </summary>
/// <param name="timeType">时间精确类型 1 日,2 时,3 分,4 秒(默认)</param>
/// <param name="fillCount">填充位数</param>
/// <returns></returns>
private static string GetTimeStr(int timeType, out int fillCount)
{
var time = DateTime.Now;
if (timeType == 1)
{
fillCount = 6;
return time.ToString("yyyyMMdd");
}
else if (timeType == 2)
{
fillCount = 4;
return time.ToString("yyyyMMddHH");
}
else if (timeType == 3)
{
fillCount = 2;
return time.ToString("yyyyMMddHHmm");
}
else
{
fillCount = 0;
return time.ToString("yyyyMMddHHmmss");
}
}
}
来源:https://www.cnblogs.com/ylkbdw/archive/2018/08/31/9565295.html
标签:C#,订单号
0
投稿
猜你喜欢
使用@Validated 和 BindingResult 遇到的坑及解决
2022-12-18 20:36:28
java实现省市区转换成树形结构
2022-11-27 03:43:37
java面试题之try中含return语句时代码的执行顺序详解
2023-11-24 07:34:16
浅析Java中如何实现线程之间通信
2022-08-24 14:28:36
C# winform 请求http的实现(get,post)
2023-03-20 13:52:01
android实现在横竖屏切换时页面信息不被重置的示例分享
2021-06-20 08:45:46
微信公众号服务号推送模板消息设置方法(后端java)
2023-11-20 08:27:58
详解Java中多进程编程的实现
2021-12-22 01:46:06
c/c++ 标准库 bind 函数详解
2023-03-29 09:10:39
利用Thumbnailator轻松实现图片缩放、旋转与加水印
2022-03-26 18:44:04
insert语句太长用StringBuilder优化一下
2023-03-29 17:56:44
浅谈Java中注解Annotation的定义、使用、解析
2021-07-29 04:07:52
Spark JDBC操作MySQL方式详细讲解
2021-05-24 12:41:51
java秒杀之redis限流操作详解
2022-07-08 09:26:57
Spring MVC请求参数的深入解析
2021-11-26 22:55:25
Spring Cloud Stream消息驱动组件使用方法介绍
2022-05-30 04:30:52
配合Swagger使用绝佳的两款直观易用JSON可视化工具
2021-10-14 23:50:23
android在异步任务中关闭Cursor的代码方法
2022-04-21 18:07:32
Android开发之模仿微信打开网页的进度条效果(高仿)
2021-09-02 10:17:04
java通过Idea远程一键部署springboot到Docker详解
2022-03-26 09:31:27