我有一个函数,它给了我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再次开始。
任何人都可以帮助我。
答案 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.
使此功能按预期工作的最简单方法: