2009-11-05 60 views
8

Tôi muốn lấy mảng tháng trong C#.
mọi thứ như sau: { January , February , ... , December }
Tôi làm cách nào để thực hiện việc này? xin vui lòng gửi cho tôi mã số trong C#. nhờCách nhận một mảng tháng trong C#

Trả lời

31

Bạn cần phải cẩn thận về vấn đề nội địa hóa cũng như: Bạn có thể sử dụng:

string[] monthNames = 
    System.Globalization.CultureInfo.CurrentCulture 
     .DateTimeFormat.MonthGenitiveNames; 

Các trường hợp sở hữu cách được giới thiệu trong một số ngôn ngữ biến cách bởi một sở hữu cách sự thay đổi danh từ, mà trong các ngôn ngữ không phát âm phù hợp với việc sử dụng tương đương với giới từ tiếng Anh "của". Ví dụ: một ngày ở Nga (Nga), "ru-RU", văn hóa, bao gồm số ngày và tên tháng mang tính di truyền.

More info…

EDIT: Nếu bạn cần tên tháng tiếng Anh bạn có thể đặt nền văn hóa hiện tại của bạn như en-US

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
+0

làm cách nào tôi có thể nhận chỉ tháng tiếng anh? – LIX

+0

Điểm tốt !!! +1 –

+0

Bạn cần đặt văn hóa hiện tại của mình là en-US Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US"); và sau đó sử dụng tring [] monthNames = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.MonthGenitiveNames; này sẽ đảm bảo mã đó là nội địa hóa đã sẵn sàng – Ngm

8
string[] months = new string[] {"January", "February", "March", "April", "May", 
    "June", "July", "August", "September", "October", "November", "December"}; 
+1

Ừ, có gì sai với cách viết những gì bạn nghĩa là gì? Kudos cho nhớ làm thế nào để KISS. –

+0

và bạn thậm chí không cần 'chuỗi mới [ ] {',' new [] {'sẽ thực hiện. – Yogesh

14
string[] monthNames = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.MonthNames; 

foreach (string m in monthNames) // writing out 
{ 
    Console.WriteLine(m); 
} 

Output:

January 
February 
March 
April 
May 
June 
July 
August 
September 
October 
November 
December 

Cập nhật:
Do lưu ý rằng cho miền địa phương khác nhau/các nền văn hóa, sản lượng có thể không phải bằng tiếng Anh. Chưa thử nghiệm trước đó.

Đối với Mỹ chỉ tiếng Anh:

string[] monthNames = (new System.Globalization.CultureInfo("en-US")).DateTimeFormat.MonthNames; 
+0

Hi Bạn cần phải cẩn thận về việc sử dụng MonthNames các ngôn ngữ khó hiểu như tiếng Nga, hãy xem bài đăng của tôi bên dưới – Ngm

+0

Phương thức 'MonthGenitiveNames' của Ngm có thể phù hợp hơn tùy theo ngữ cảnh. –

+0

OK, tôi đã thêm "' en-US' CultureInfo" Tháng Tên –

6

Một thay thế mà hy vọng dạy làm thế nào bạn có thể áp dụng các chức năng phạm vi để tạo cho tuần tự nhiều thứ.

var startDate = new DateTime(2014,1,1); 
var months = Enumerable.Range(0,11) 
         .Select(startDate.AddMonths); 
         .Select(m => m.ToString("yyyy MMMM")) 
         .ToList(); 

Điều bạn đang làm là tạo đối tượng DateTime (startDate) và sử dụng đối tượng đó để tạo tất cả các ngày khác liên quan đến chính nó.

  1. Enumerable.Range (0,11) tạo ra một danh sách các số nguyên {} 0,1,2,3,4,5,6,7,8,9,10,11

  2. Select (startDate.AddMonths) cung cấp mỗi một số nguyên cho hàm AddMonths của startDate, nó tạo ra một danh sách các ngày từ tháng 1 đến tháng 12.

  3. Chọn (m => m.ToString ("yyyy MMMM") mất mỗi ngày từ tháng một-Tháng Mười Hai và chuyển đổi chúng thành một chuỗi định dạng (trong trường hợp này "2014 tháng một")

  4. ToList() đánh giá tất cả các chức năng và trả về nó như là một danh sách các chuỗi.

+0

không phải là cách tốt nhất để nhận tên tháng, nhưng chắc chắn tuyệt vời như một giải pháp thay thế. 1 cho nỗ lực và giải thích tốt. – Kagawa

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