Cách tốt nhất để biến một số nguyên thành tên tháng trong c #?


123

Có cách nào tốt nhất để biến một số nguyên thành tên tháng của nó trong .net không?

Rõ ràng tôi có thể quay một datetime để xâu chuỗi nó và phân tích tên tháng ra khỏi đó. Điều đó có vẻ như là một sự lãng phí thời gian khổng lồ.

Câu trả lời:



20

Tại sao không chỉ sử dụng somedatetime.ToString("MMMM")?


1
Vì vậy, bất cứ khi nào tôi cần biến ngày 1 thành tháng 1, tôi cần phải cập nhật thời gian mới với một năm và ngày tùy ý, để chỉ nhận được tháng một?
DevelopChris

1
Điều đó là chính xác, như một phần thưởng, bạn có thể có nó bằng bất kỳ ngôn ngữ địa phương nào bạn muốn :)
leppie

20

Cập nhật với không gian tên và đối tượng chính xác:

//This was wrong
//CultureInfo.DateTimeFormat.MonthNames[index];

//Correct but keep in mind CurrentInfo could be null
DateTimeFormatInfo.CurrentInfo.MonthNames[index];

1
Điều này không hoạt động. Nick Berardi cung cấp câu trả lời chính xác.
quạ

1
từ bây giờ tôi sẽ cố gắng biên dịch câu trả lời của mình trước
Ovidiu Pacurar

Nhận ra đây là một câu hỏi cũ, tôi vẫn muốn chỉ ra rằng câu trả lời được chấp nhận do Nick Berandi cung cấp là chính xác hơn (ít nhất là đối với việc triển khai của Microsoft - không chắc chắn về Mono), bởi vì thuộc tính MonthNames luôn sao chép mảng tên tháng, tạo ra toàn bộ một điều ít hiệu quả.
AASoft

7

Bạn có thể sử dụng một phương thức tĩnh từ Microsoft.VisualBasickhông gian tên:

string monthName = Microsoft.VisualBasic.DateAndTime.MonthName(monthInt, false);

6
DateTime dt = new DateTime(year, month, day);
Response.Write(day + "-" + dt.ToString("MMMM") + "-" + year);

Bằng cách này, tháng của bạn sẽ được hiển thị theo tên của họ chứ không phải theo số nguyên.


2

Để có được giá trị tháng viết tắt, bạn có thể sử dụng Enum.Parse();

Enum.Parse(typeof(Month), "0");

Điều này sẽ tạo ra "tháng một" như kết quả.

Hãy nhớ rằng đây là chỉ số dựa trên không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.