.netフレームワークに数か月間の公式の列挙があるかどうかを確認しています。
月の使用がどれほど一般的であるか、および.netフレームワークにはそのような列挙が他にもあるため、1つある可能性があります。
たとえば、月曜日、火曜日などを含むSystem.DayOfWeekの曜日の列挙があります。
年の月、つまり1月、2月などに1つあるのだろうか?
誰か知っていますか?
ありませんが、月の名前が必要な場合は使用できます:
CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName (DateTime.Now.Month);
(この場合、現在の月の)文字列表現を返します。 GetMonth
は1から13までの引数を取ることに注意してください。1月は1、13は空の文字列です。
いいえ、ありません。
.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
}
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 });
この名前空間の列挙型 "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
一部のカレンダーには実際に12か月以上あります: http://en.wikipedia.org/wiki/Month 。
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によって返されます。
私はこのようにコーディングするものを探しています
if (DateTime.Now.Month != 1) // can't run this test in January.
この魔法の数は1です。一方、
if (DateTime.Now.Month != DateTime.MonthsOfYear.January)
自己文書化
列挙型はかなり便利ですが、次の形式で目的の結果を得ることができます。
_DateTime myDateTimeObject=DateTime.Now; //(for example)
string monthName = myDateTimeObject.ToString("MMMM");
_
これは、完全な月名(1月、2月など)を返します。短い名前(Jan、Feb、Marなど)にはmyDateTimeObject.ToString("MMM")
を使用します。
特定の月番号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に制限されません。