Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用DateTime和员工计数,然后用0';s_C#_Datetime_Counter - Fatal编程技术网

C# 使用DateTime和员工计数,然后用0';s

C# 使用DateTime和员工计数,然后用0';s,c#,datetime,counter,C#,Datetime,Counter,我正在尝试创建一个简单的Employee类,该类增加创建的每个Employee实例的Employee计数。 这非常简单,只是我被要求创建员工编号,该编号应使用当前年份(使用DateTime对象)和当前员工计数(用前导零填充)构建,因此员工编号始终为8个字符长,例如,如果第十名员工是在2013年创建的,员工编号为20130010。您不必每年重置员工计数器 现在我已经完成了全部工作 string year = DateTime.Now.ToString(); 增加了empoylee的数量, 但是我

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

现在我已经完成了全部工作

string year = DateTime.Now.ToString();
增加了empoylee的数量, 但是我很困惑如何用0来填补剩余的空白

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


谢谢

这应该很简单

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

下面的代码片段:

string id = DateTime.Now.Year.ToString() + 10.ToString("0000");

它应该非常简单

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

下面的代码片段:

string id = DateTime.Now.Year.ToString() + 10.ToString("0000");

如果我没弄错的话,你可能只是想在数字上加上前导零

string year = DateTime.Now.Year.ToString();
int EmpNumber = 1;
string newNumber = year + EmpNumber.ToString("D4");
输出将是:
“20120001”


您可能会看到:

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

string year = DateTime.Now.Year.ToString();
int EmpNumber = 1;
string newNumber = year + EmpNumber.ToString("D4");
输出将是:
“20120001”


您可能会看到:

您希望使用以下内容:

var employeeId = string.Format("{0}{1:D4}", DateTime.Now.Year, runningNumber);

您希望使用类似以下内容:

var employeeId = string.Format("{0}{1:D4}", DateTime.Now.Year, runningNumber);

你需要研究一下这个方法

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

您可能需要考虑使用Oracle序列或SQLServer AutoPype,因为您可能会遇到线程/同步问题(即两个雇员同时创建并分配相同的雇员ID)。 此外,只有在必要时才应将跟踪员工数量作为优化。如果没有绩效问题,可以使用

计数
(在数据库或内存中
列表
)语句获取员工数量


跟踪员工名单和员工人数违反了法律。我向你保证,一旦事情变得更加复杂,你就会遇到麻烦:在某个时候,这两个数字(出于某种原因)会有所不同……

你会想研究一下这个方法

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

您可能需要考虑使用Oracle序列或SQLServer AutoPype,因为您可能会遇到线程/同步问题(即两个雇员同时创建并分配相同的雇员ID)。 此外,只有在必要时才应将跟踪员工数量作为优化。如果没有绩效问题,可以使用

计数
(在数据库或内存中
列表
)语句获取员工数量


跟踪员工名单和员工人数违反了法律。我向你保证,一旦事情变得更加复杂,你就会遇到麻烦:在某个时候,这两项统计会(出于某种原因)发生与众不同…

你只需要将10更改为动态。你只需要将10更改为动态。-1:这真的不能满足OP的要求。你的代码将在年前填充,而不是在年和员工编号之间填充。
但我太困惑了,不知道如何用0来填补剩余的空白,这就是问题所在,我正试图解决这个问题 that@DanielHilgarth,哦,是的,这是正确的,我需要对员工编号做此操作。让我更正一下,但你做错了。请再次尝试阅读此问题。他在2013年运行编号10。结果应为20130010,即:年份和10加零。我甚至不知道你的原始编号(是字符串)在哪里源代码。@DanielHilgarth,更正了我的答案。我想。谢谢你指出-1:这真的不能满足OP的要求。你的代码将在年前填充,而不是在年和员工编号之间填充。
但是我很困惑,如何用问题中的0来填补剩余的空白,我正试图解决这个问题that@DanielHilgarth,哦,是的,这是正确的,我需要为员工编号做这件事。让我纠正一下,但你做错了。再次尝试阅读这个问题。他在2013年跑了第10名。结果应该是20130010,也就是说:第10年用零填充。我甚至不知道你的原始编号(是字符串)在哪里丹尼尔希尔加思,纠正了我的回答。我想。谢谢你指出