字符串日顺序。

时间:2012-10-22 11:50:35

标签: c# asp.net loops

我有一个函数,它给了我12位数的字符串。

例如。

AA 01 201 210 22
AA 02 201 210 22
.
.
AA 99 201 210 22
AB 01 201 210 22
& so on. . .

public string GetPersonalId(int n)
{
    char letter1 = (char)('A' + ((n / 10 / 26 / 26) % 26));
    char letter2 = (char)('A' + ((n / 10 / 10 ) % 26));
    char digit1 = (char)('0' + ((n / 10) % 10));
    char digit2 = (char)('0' + ((n) % 10));

    string dateString = string.Format("{0:yyyyMMdd}", DateTime.Today)
        .Insert(6, " ")
        .Insert(3, " ");

    return string.Format("{0}{1} {2}{3} {4}",
        letter1, letter2, digit1, digit2, dateString);
}

现在问题是第二天这个序列应该从AA 01 201 210 23再次开始。

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:2)

  • 无论您在哪里存储n,都要在其旁边存储日期时间dt
  • 每次增加n时,请检查dt是否等于Datetime.Today
    • 如果是,请像以前一样传递n
    • 如果没有,请将n设置为零(或者可能是一个)并将dt设置为DateTime.Today

(我也会将dt传递给GetPersonalId,而不是在函数中使用DateTime.Today,以防DateTime.today这两个用法之间的日期选项。)

e.g。如果你有

int currentN = 0;

...

string GetNextPersonalId()
{
    currentN += 1;
    return GetPersonalId(currentN);
}

改为

int currentN = 0;
DateTime currentDay = DateTime.Today;

...

string GetNextPersonalId()
{
    if (DateTime.Today == currentDay)
    {
        currentN += 1;
    }
    else
    {
        currentN = 0; // or 1
        currentDay = DateTime.Today;
    }
    return GetPersonalId(currentN);
}

答案 1 :(得分:0)

想法是:每天你需要将“n”值重置为1.

使此功能按预期工作的最简单方法:

  1. 保留前一天生成的最后一个ID(-s)或从DataBase获取;主要条件 - 最新而非今天
  2. 传递“n”作为当前ID与步骤1)中的差异;