我正在尝试创建一个简单的Employee类,它会增加每个创建的empolyee实例的员工数量。 这非常简单,除了我被要求创建应该使用当前年份(使用DateTime对象)构建的员工编号和当前员工数量用前导零填充,以便员工编号始终为8个字符,例如如果第十名员工是在2013年创建的,则员工编号为20130010.您无需每年重置员工柜台。
现在我已经完成了整个
string year = DateTime.Now.ToString();
并增加了empoylee数, 但是我很困惑如何用0来填补剩余的空白。
任何帮助都会受到赞赏,因为这可能是一个非常简单的解决方案。
谢谢
答案 0 :(得分:2)
应该很简单。
但请使用年份而非完整日期。
下面的代码段:
string id = DateTime.Now.Year.ToString() + 10.ToString("0000");
答案 1 :(得分:2)
如果我理解正确,您可能只想在您的号码中添加前导零。
string year = DateTime.Now.Year.ToString();
int EmpNumber = 1;
string newNumber = year + EmpNumber.ToString("D4");
输出为:"20120001"
答案 2 :(得分:0)
你想使用这样的东西:
var employeeId = string.Format("{0}{1:D4}", DateTime.Now.Year, runningNumber);
答案 3 :(得分: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>
)语句中获取员工数量。
跟踪员工名单和员工人数违反了Single Source of Truth。我向你保证,一旦事情变得更加复杂,你就会遇到麻烦:在某些时候,两个计数会(由于某种原因)会有所不同......