2012-09-11 62 views
0

我試圖創建一個簡單的Employee類,用於增加員工數量,創建每個empolyee實例。 這非常簡單,除了我被要求創建應該使用當前年份構建的員工編號(使用DateTime對象)和當前員工數以前導零填充,以便員工編號始終爲8個字符很長,例如如果第十名員工在2013年創建,則員工編號爲20130010.您不必每年都重置員工計數器。使用DateTime和員工數,然後用0填充其餘數字

現在我已經完成了整個

string year = DateTime.Now.ToString(); 

和遞增empoylee計數, 但我很困惑,如何在剩下的缺口用0補。

任何幫助,將不勝感激,因爲這是如此令人沮喪,因爲它可能是一個非常簡單的解決方案。

謝謝

回答

2

它應該很簡單。

但使用年份和不完整的日期。

下面的代碼片段:

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

你只需要將10改爲動態。 – VIRA

2

如果我理解你正確的或許你只是想前導零添加到您的號。

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

輸出將是:"20120001"

您可能會看到:How to: Pad a Number with Leading Zeros

+1

-1:這真的沒有做OP的想法。您的代碼將在年前填充,而不是在年份和員工編號之間填寫。 –

+0

'但我很困惑,以至於如何填補問題中存在的0'的剩餘空白,我試圖解決這個問題 –

+0

@丹尼爾希爾加斯,哦,是的,這是正確的,我需要這樣做員工編號。讓我糾正它 –

0

你想用這樣的:

var employeeId = string.Format("{0}{1:D4}", DateTime.Now.Year, runningNumber); 
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。我向你保證,一旦事情變得更加複雜,你將遇到麻煩:在某些時候,兩個計數將會(出於某種原因)不同...