0

我正在尝试创建一个简单的 Employee 类,该类增加每个创建的员工实例的员工计数。这非常简单,除了我被要求创建应使用当前年份(使用 DateTime 对象)和当前员工计数用前导零填充来构造的员工编号,以便员工编号始终为 8 个字符长,例如,如果在 2013 年创建了第十名员工,则员工编号将为 20130010。您不必每年都重置员工计数器。

现在我已经完成了整个

string year = DateTime.Now.ToString();

并增加了员工人数,但我很困惑如何用 0 填补剩余的空白。

任何帮助将不胜感激,因为这太令人沮丧了,因为它可能是一个非常简单的解决方案。

谢谢

4

4 回答 4

2

它应该很简单。

但一定要使用年份而不是完整的日期。

下面的代码片段:

string id = DateTime.Now.Year.ToString() + 10.ToString("0000");
于 2012-09-11T07:27:51.993 回答
2

如果我理解正确,您可能只想在号码中添加前导零。

string year = DateTime.Now.Year.ToString();
int EmpNumber = 1;
string newNumber = year + EmpNumber.ToString("D4");

输出将是:"20120001"

您可能会看到:如何:用前导零填充数字

于 2012-09-11T07:28:01.100 回答
0

你想使用这样的东西:

var employeeId = string.Format("{0}{1:D4}", DateTime.Now.Year, runningNumber);
于 2012-09-11T07:30:00.493 回答
0

您需要查看String.PadLeft方法。

string employeeId = string.Concat(DateTime.Now.Year.ToString(), (lastEmployeeId + 1).ToString().PadLeft(4, '0');

您可能需要考虑使用 Oracle 序列或 SQLServer auto_increment,因为您可能会遇到线程/同步问题(即同时创建两个员工并分配相同的员工 ID)。

此外,仅当事实证明有必要时,才应将员工数量作为优化来进行。如果您没有性能问题,您可以使用COUNT(在数据库或内存中List<Employee>)语句来获取员工数量。

跟踪员工名单和员工人数违反了单一事实来源。我向你保证,一旦事情变得更复杂,你就会遇到麻烦:在某些时候,这两个计数会(出于某种原因)不同......

于 2012-09-11T07:32:42.310 回答