回答:
ありませんが、月の名前が必要な場合は、次のように使用できます。
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等である)、この列挙のデフォルトは次のようになり(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"で1つ見つかりました: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
。そのため、機能しません。
いくつかのカレンダーは確かに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");
これにより、完全な月の名前(January、2月など)が返されます。利用myDateTimeObject.ToString("MMM")
短い名前のために(月、2月、月、など)。
特定の月番号がある場合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が必要です。2番目の例では、(ほぼ)任意の月数が可能で、1〜12に制限されていません。