c#如何如何生成年月跟4位递增的数字

2024-11-01 19:36:17
推荐回答(6个)
回答1:

private  string GenerateStr()

        {

            //获取当前序列号,此处我存储在了配置文件中,实际应用中应该写入数据库或者文本文件中

            var currentNumber = ConfigurationManager.AppSettings["number"];

            if (string.IsNullOrEmpty(currentNumber))//为空,根据当前年月生成一个

            {

                var yearMonth = DateTime.Now.Date.ToString("yyyyMM");

                var number = yearMonth + "0001";

                ConfigurationManager.AppSettings["number"] = number;

                return number;

            }

            //不为空的话截取年月部分与当前年月比较

            var yearMonthPart = currentNumber.Substring(0, 6);

            var dtNow = DateTime.Now.Date.ToString("yyyyMM");

            if (!yearMonthPart.Equals(dtNow))//如果年月不相同,重新生成

            {

                var number = dtNow + "0001";

                ConfigurationManager.AppSettings["number"] = number;

                return number;

            }

            //若年月相同,则根据后面四位序列号+1生成新的序列号

            var num = currentNumber.Substring(6, currentNumber.Length - 6);

            var nextNum = GetIndex(num);

            var result = yearMonthPart + nextNum;

            ConfigurationManager.AppSettings["number"] = result;

            return result;

        }


        private  string GetIndex(string num)

        {

            var nextNum = "";

            for (int i = 0; i < num.Length; i++)

            {

                if (num[i] != '0')

                {

                    var number = num.Substring(i, num.Length - i);

                    nextNum = (int.Parse(number) + 1).ToString();

                    var zeroLength = num.Length - nextNum.Length;

                    for (int j = 0; j < zeroLength; j++)

                    {

                        nextNum = "0" + nextNum;

                    }

                    return nextNum;

                }

            }

            return nextNum;

        }

测试成功,

回答2:


        private string getdate()
        {
            string strResult = string.Empty;
            string strLast = "2013070234";//最后加入的一条数据
            string strDate = DateTime.Now.ToString("yyyyMM");
            if (!string.IsNullOrEmpty(strLast))
            {
                if (strLast.Substring(0, 6) == strDate)
                {
                    string lastNum = "0000" + (int.Parse(strLast.Substring(6).TrimStart('0')) + 1).ToString();
                    lastNum = lastNum.Substring(lastNum.Length - 4);
                    strResult = strDate + lastNum;
                }
                else
                {
                    strResult = strDate + "0001";
                }
            }
            else
            {
                strResult = strDate + "0001";
            }
            return strResult;
        }

根据你的意思,大概就是这个样子,首先你得取得上一条数据

回答3:

在数据库建一张表,保存当前的值,然后用储存过程返回当前值+1

回答4:

单据信息表,记录单据编码规则

Prefix 编码前缀

Suffix 编码後缀(年月 例如1307)

SDLength    流水码长度

 

 

自动编码记录表SD是流水码,记录了当前最後一码的编码

 

 

自动编号的存储过程,嘿嘿,只贴一部份,这可都是经验知识,自己慢慢研究吧

回答5:

1、使用数据库,存储数据
2、使用配置文件,将当前的2013070001存储起来,要生产数字时,分析配置文件中的字段即可,if......else.....

回答6:

弄两个变量,一个时间变量,一个字符串变量,根据日期判断一下是要递增还是从0001开始,白两个变量+起来就行了啊