zoukankan      html  css  js  c++  java
  • 生成日期流水号帮助类

     /// <summary>
        /// 生成日期流水号
        /// </summary>
        public class DateSerialNumberGenerator
        {
            private static readonly object Lock = new object();
    
            private static string _nowYear;//系统年份
    
            private static string _nowMonth;//系统月份
    
            /// <summary>
            /// 获取下一个日期流水号 , 步长=1
            /// </summary>
            /// <param name="thisSNumber">当前流水 - 位长[>=7] - 格式[YYYYMMXXX]</param>
            /// <param name="minSNumberLength">字串位长,默认=7</param>
            /// <returns></returns>
            public static string GetNextSNumber(string thisSNumber = null, int minSNumberLength = 9)
            {
                //获取系统时间
                _nowYear = DateTime.Now.Year.ToString();
    
                _nowMonth = DateTime.Now.Month.ToString().PadLeft(2, '0');
    
                //为空生成当年/月第一个序列号
                if (string.IsNullOrEmpty(thisSNumber) || thisSNumber.Length < minSNumberLength)
                {
                    return _nowYear + _nowMonth + "1".PadLeft(minSNumberLength - _nowYear.Length - _nowMonth.Length, '0');
                }
    
                lock (Lock)
                {
                    //截取参数时间
                    var year = thisSNumber.Substring(0, 4);
    
                    var month = thisSNumber.Substring(4, 2);
    
                    var num = thisSNumber.Substring(6);
    
                    //跨年判定
                    if (year.Equals(_nowYear))
                    {
                        //跨月判定
                        if (month.Equals(_nowMonth))
                        {
                            return year + month + GetFormatNum(num, thisSNumber.Length);
                        }
                        return year + _nowMonth + "1".PadLeft(thisSNumber.Length - _nowYear.Length - _nowMonth.Length, '0');
                    }
                    return _nowYear + _nowMonth + "1".PadLeft(thisSNumber.Length - _nowYear.Length - _nowMonth.Length, '0');
                }
            }
    
            /// <summary>
            /// 位移格式化序列号
            /// </summary>
            /// <param name="num">序列号</param>
            /// <param name="numberlenght">字串位长</param>
            /// <returns></returns>
            private static string GetFormatNum(string num, int numberlenght)
            {
                string nowNum = (Convert.ToInt32(num) + 1).ToString();
    
                return nowNum.PadLeft(numberlenght - _nowYear.Length - _nowMonth.Length, '0');
            }
        }

    结果:

    201807001

  • 相关阅读:
    第十二课:复习课一
    第十一课:磁场和洛伦兹力
    关于 求 曲面 短程线
    二元函数 的 极值点 怎么求 ?
    给 学生党 出一道题 : 斯涅耳定理 的 增强版
    极坐标系 : 一生只做一件事
    代数几何 定理 合集
    代数几何 很难 吗 ?
    看了一下 复变函数 黎曼曲面 流形 复流形 仿射空间 射影空间
    物空必能 先生 的 绝对速度 是 一种 “约化速度”
  • 原文地址:https://www.cnblogs.com/shiruina/p/9359736.html
Copyright © 2011-2022 走看看