2012-03-21 42 views
7

Tôi tự hỏi nếu có một cách tốt hơn để có được những chữ số cuối cùng của một năm từ một đối tượng datatimeđịnh dạng chuỗi DateTime chữ số cuối cùng của năm

var date = DateTime.Now; 
string year1 = date.ToString("y"); //NOT OK return Month year (eg March 2012) 
char year2 = date.ToString("yy")[1]; //OK return last digit of the year (eg 2) 
char year3 = date.ToString("yy").Last(); //OK same as above using linq 

Bất cứ ai cũng biết nếu một định dạng đã predifine tồn tại cho retreiving chữ số cuối cùng của năm?

Cảm ơn

Trả lời

22

Bạn có thể làm điều đó với đơn giản Modulo toán:

int digit = date.Year % 10; 
+0

cảm ơn, tôi đã bỏ lỡ điều đó! Tôi sẽ chấp nhận câu trả lời có thể là – Guillaume

+0

nếu bạn thực hiện mod 10 thì nó sẽ trả lại 5 từ 2005 –

+0

Rất tốt. Mặc dù bạn nên sử dụng modulo 10 thay vì modulo 100. – Guffa

1

Đây có phải là những gì bạn muốn?

DateTime.Now.Year.ToString().Substring(3); 
3
DateTime d = DateTime.Now; 
int digit = d.Year % 10; 
-1

Tại sao bạn sẽ không sử dụng một xâu đơn giản (1,1) trên đầu ra chuỗi 2 chữ số?

4

Không, không có custom format string để nhận số cuối cùng của năm.


Có một chuỗi định dạng tùy chỉnh "y", nhưng điều đó sẽ vẫn trả lại hai chữ số, chỉ không được đệm bằng 0. I E. 2009 sẽ được định dạng là "9", nhưng năm 2010 sẽ được định dạng là "10".

Bạn có thể sử dụng một chuỗi rỗng đen để làm cho "y" là chuỗi định dạng tùy chỉnh thay vì chuỗi định dạng chuẩn:

date.ToString("''y"); 

này sẽ trở lại với hai chữ số cuối cùng, ví dụ như "12", chứ không phải so với định dạng chuẩn "Tháng 3 năm 2012".

+0

Nó hoạt động đúng nhờ. – JCO9

Các vấn đề liên quan