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

如何实现出如2013070001、2013070002这种递增数,并且根据年份月份不同从新从0001开始生成?... 如何实现出如2013070001、2013070002这种递增数,并且根据年份月份不同从新从0001开始生成? 展开
 我来答
zljk0306
2013-07-22 · TA获得超过366个赞
知道小有建树答主
回答量:229
采纳率:90%
帮助的人:212万
展开全部

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;

        }

测试成功,

yzreactor
2013-07-22 · TA获得超过270个赞
知道答主
回答量:226
采纳率:0%
帮助的人:140万
展开全部

        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;
        }

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
colinsky2012
2013-07-22
知道答主
回答量:4
采纳率:0%
帮助的人:3973
展开全部
在数据库建一张表,保存当前的值,然后用储存过程返回当前值+1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
89801860
2013-07-22 · TA获得超过139个赞
知道小有建树答主
回答量:186
采纳率:100%
帮助的人:133万
展开全部

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

Prefix 编码前缀

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

SDLength    流水码长度

 

 

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

 

 

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chrisbadboy
2013-07-22 · TA获得超过225个赞
知道小有建树答主
回答量:332
采纳率:100%
帮助的人:181万
展开全部
1、使用数据库,存储数据
2、使用配置文件,将当前的2013070001存储起来,要生产数字时,分析配置文件中的字段即可,if......else.....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cce4a3c
2013-07-22 · TA获得超过144个赞
知道答主
回答量:50
采纳率:0%
帮助的人:35.7万
展开全部
弄两个变量,一个时间变量,一个字符串变量,根据日期判断一下是要递增还是从0001开始,白两个变量+起来就行了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式