답변:
그렇지는 않지만 월 이름을 원한다면 다음을 사용할 수 있습니다.
CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName (DateTime.Now.Month);
문자열 표현 (이 경우 이번 달)을 반환합니다. 주 GetMonth
1 13에서 인수를 - 1 월 1 일, 13은 빈 문자열입니다.
아니, 없습니다.
Microsoft.VisualBasic.MonthName
?
.net 프레임 워크에 몇 달 동안 공식 열거가 있는지 확인하고 있습니다.
아니.
앞서 준비한 것이 있습니다. (C # 버전)
public enum Month
{
NotSet = 0,
January = 1,
February = 2,
March = 3,
April = 4,
May = 5,
June = 6,
July = 7,
August = 8,
September = 9,
October = 10,
November = 11,
December = 12
}
NotSet
합니까? 왜 시작하지 January = 1
않습니까? 당신은 너무 할당의 나머지 부분과 멀리 할 수있는 ...
January
는 예를 들어 클래스의 속성으로 사용되는 경우 기본값이되기 때문 입니다. 대부분의 경우 나는 그것을 원하지 않습니다. 명시 적으로 할당되기 전에 'null'값을 갖기를 원합니다
NotSet
생략된다 January = 1
(나머지 값이 3, 2 등이있다)를이 enum의 기본 것(Month)0
DateTimeFormatInfo.CurrentInfo.MonthNames
(열거 형은 아니지만 DateTimeFormatInfo의 CurrentInfo 인스턴스가 일반적으로 찾고 있다고 생각합니다). 드롭 다운 목록이 필요하면 다음과 같이 작성할 수 있습니다.
List<string> monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames.Take(12).ToList();
var monthSelectList = monthNames.Select(
m => new { Id = monthNames.IndexOf(m) + 1, Name = m });
var months = Enumerable.Range(0, 11).Select(m => new KeyValuePair<int, string>(m + 1, DateTimeFormatInfo.CurrentInfo.MonthNames[m]));
이 네임 스페이스의 "MonthNamesType"열거 형에서 Microsoft.ServiceModel.Channels.Mail.ExchangeWebService.Exchange2007을 찾았습니다.
위치는 다소 무섭지 만 그럼에도 불구하고 거기에 있습니다.
정확히 무엇을 성취하려고합니까?
원하는 모든 것이 연중 월이 표시된 12 개의 문자열이면 사용자 지정 형식 문자열을 통해 사용할 수 있습니다. 모든 날짜 / 시간 인스턴스에 적용됩니다.
DateTime dt = DateTime.Parse("12 January 2009";
dt.ToString("MMM"); // prints "Jan"
// (or the right abbrev is in current culture)
dt.ToString("MMMM"); // prints "January"
// (or correct sp in current culture)
다른 개체 유형의 열거 속성으로 월을 지정할 수 있도록하려면 DateTime 필드의 Month 속성이 1에서 12까지의 정수를 반환합니다.
네, 확실히 있습니다. Microsoft.VisualBasic 네임 스페이스의 일부입니다.
Microsoft.VisualBasic.MonthName
그리고이 네임 스페이스에 문제가있는 분들은 이것이 진정으로 .NET이고 아무데도 가지 않을 것임을 이해해야합니다. .
레코드를 위해 MonthName
함수는 내부적으로 다음을 호출합니다.
Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetMonthName
IEnumerable
이지만 enum
eration 은 아닙니다 . 그래서 작동하지 않습니다.
일부 캘린더에는 실제로 12 개월 이상이 있습니다. http://en.wikipedia.org/wiki/Month 있습니다 하지만 MS가 .NET에서 열거 형을 만들지 않은 이유인지는 말할 수 없습니다.
VB에서 복사 / 붙여 넣기를 좋아했던 나 같은 게으른 사람들을 위해 :
Public Enum MonthsOfYear
January = 1
February = 2
March = 3
April = 4
May = 5
June = 6
July = 7
August = 8
September = 9
October = 10
November = 11
December = 12
End Enum
확실하지는 않지만 직감은 아닙니다. DateTime.Month는 정수를 반환합니다. 그러한 열거가 있다면 아마도 DateTime에 의해 반환 될 것입니다.
열거 형은 다소 유용하지만 다음 형식으로 원하는 결과를 얻을 수 있습니다.
DateTime myDateTimeObject=DateTime.Now; //(for example)
string monthName = myDateTimeObject.ToString("MMMM");
그러면 전체 월 이름 (1 월, 2 월 등)이 반환됩니다. 사용 myDateTimeObject.ToString("MMM")
짧은 이름 (1 월, 2 월, 3 월, 등).
특정 월 번호가있는 경우 mnthNum
,이없는 경우 DateTime
항상 다음과 같이 사용할 수 있습니다.
string monthName=(new DateTime(2000,mnthNum,1)).ToString("MMMM");
또는
string monthName=((new DateTime(2000,1,1)).AddMonths(mnthNum-1)ToString("MMMM");
그러나 그것은 약간 지저분 해 보입니다. 첫 번째 예는 mnthNum
1에서 12 사이 여야합니다. 두 번째 예에서는 (거의) 모든 월 번호를 허용하며 1에서 12로 제한되지 않습니다.