C#如何生成唯一訂單號
更新時間:2018年08月31日 17:13:36 作者:一路狂奔的我
這篇文章主要為大家詳細(xì)介紹了C#如何生成唯一訂單號,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C#生成唯一訂單號的具體代碼,供大家參考,具體內(nèi)容如下
根據(jù)GUID+DateTime.Now.Ticks生產(chǎn)唯一訂單號
/// <summary>
/// 生成唯一數(shù)
/// </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 秒(默認(rèn)) </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;//填充位數(shù)
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 秒(默認(rèn))</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;//填充位數(shù)
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 秒(默認(rèn))</param>
/// <param name="fillCount">填充位數(shù)</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");
}
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#中的 StreamReader/StreamWriter 使用示例詳解
在 C# 開發(fā)中,StreamReader 和 StreamWriter 是處理文本文件的核心類,屬于 System.IO 命名空間,本文將從基礎(chǔ)到高級用法,結(jié)合代碼示例,全面解析其核心功能、性能優(yōu)化及常見問題解決方案,感興趣的朋友一起看看吧2025-03-03
C# Winform實現(xiàn)表格復(fù)制粘貼效果
這篇文章主要為大家學(xué)習(xí)介紹了如何通過C# Winform實現(xiàn)表格復(fù)制粘貼效果,文中的示例代碼講解詳細(xì),具有一定的參考價值,需要的可以了解一下2023-07-07
C# 在PDF文檔中創(chuàng)建表格的實現(xiàn)方法
表格能夠一目了然的讓用戶看到數(shù)據(jù)信息,使信息顯得有條理化,那么在pdf類型的文檔中如何來添加表格并對表格進行格式化操作呢?下面小編給大家?guī)砹薈# 在PDF文檔中創(chuàng)建表格的實現(xiàn)方法,需要的朋友參考下吧2017-12-12
C# wpf使用ffmpeg命令行實現(xiàn)錄屏的示例代碼
本文主要介紹了C# wpf使用ffmpeg命令行實現(xiàn)錄屏的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08

