雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網!

C#教程

當前位置:主頁 > 軟件編程 > C#教程 >

C#如何生成唯一訂單號

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C#教程|點擊:

本文實例為大家分享了C#生成唯一訂單號的具體代碼,供大家參考,具體內容如下

根據(jù)GUID+DateTime.Now.Ticks生產唯一訂單號

/// <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 秒(默認) </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 秒(默認)</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 秒(默認)</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");
      }
    }
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持我們。

上一篇:在C#中如何使用Dapper詳解(譯)

欄    目:C#教程

下一篇:C#中緩存的基本使用方法

本文標題:C#如何生成唯一訂單號

本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/5096.html

網頁制作CMS教程網絡編程軟件編程腳本語言數(shù)據(jù)庫服務器

如果侵犯了您的權利,請與我們聯(lián)系,我們將在24小時內進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網 版權所有