Chcę sprawdzić, czy w ramach .net istnieje oficjalne wyliczenie od miesięcy.
Wydaje mi się, że jest możliwe, ze względu na to, jak powszechne jest użycie miesiąca i ponieważ istnieją inne tego typu wyliczenia w ramach .net.
Na przykład istnieje wyliczenie dni w tygodniu System.DayOfWeek, które obejmują poniedziałek, wtorek itd.
Zastanawiam się, czy jest taki dla miesięcy w roku, czyli stycznia, lutego itd.?
Czy ktoś wie?
c#
.net
datetime
enumeration
Mark Rogers
źródło
źródło
Nie, nie ma.
źródło
Microsoft.VisualBasic.MonthName
?Nie.
Oto jeden, który przygotowałem wcześniej. (Wersja C #)
źródło
NotSet
? Dlaczego nie po prostu zacząćJanuary = 1
? wtedy możesz pozbyć się także reszty zadań ...January
jeśli, na przykład, jest używany jako właściwość dla klasy. w większości przypadków nie chcę tego, chcę, aby miał wartośćNotSet
zostanie pominięty iJanuary = 1
(a pozostałe wartości to 2, 3 itd.), To domyślną wartością tego wyliczenia będzie(Month)0
DateTimeFormatInfo.CurrentInfo.MonthNames
(nie wyliczenie, ale myślę, że wystąpienie CurrentInfo DateTimeFormatInfo jest tym, czego szukasz w ogóle). Jeśli chcesz listę rozwijaną, możesz ją zbudować w następujący sposób:źródło
var months = Enumerable.Range(0, 11).Select(m => new KeyValuePair<int, string>(m + 1, DateTimeFormatInfo.CurrentInfo.MonthNames[m]));
Znaleziono jeden w wyliczeniu „MonthNamesType” tej przestrzeni nazw: Microsoft.ServiceModel.Channels.Mail.ExchangeWebService.Exchange2007
Lokalizacja trochę przeraża, ale mimo to istnieje.
źródło
Co dokładnie próbujesz osiągnąć?
jeśli chcesz mieć tylko dwanaście ciągów z wypisanymi miesiącami roku, to jest to dostępne za pośrednictwem niestandardowego ciągu formatu - stosowanego dla dowolnego wystąpienia daty i godziny,
jeśli chcesz tylko móc określić miesiąc jako wyliczoną właściwość innego typu obiektu, właściwość Month pola DateTime zwraca liczbę całkowitą od 1 do 12 ...
źródło
Tak, na pewno jest. Jest częścią przestrzeni nazw Microsoft.VisualBasic ...
A ci z was, którzy mają problem z tą przestrzenią nazw, powinni zrozumieć, że to naprawdę jest .NET i nigdzie się nie wybiera .
Dla przypomnienia,
MonthName
funkcja wewnętrznie wywołuje następujący ...źródło
IEnumerable
ale nie jestenum
poprawką. Więc to nie działa.Niektóre kalendarze rzeczywiście mają więcej niż 12 miesięcy: http://en.wikipedia.org/wiki/Month, ale nie mogę powiedzieć, czy to był powód, dla którego MS nie zbudowało wyliczenia w .NET.
Dla leniwych jak ja, którzy chcieliby kopiować / wklejać w VB:
źródło
Nie wiem na pewno, ale mam przeczucie. DateTime.Month zwraca liczbę całkowitą. Gdyby istniało takie wyliczenie, prawdopodobnie zostałoby zwrócone przez DateTime.
źródło
Szukałbym czegoś takiego do kodowania, jak
ma w sobie tę magiczną liczbę 1. natomiast
dokumentuje się samoczynnie
źródło
Wyliczenie byłoby raczej przydatne, ale można uzyskać pożądany wynik za pomocą formatu:
Zwraca pełną nazwę miesiąca (styczeń, luty itp.). Użyj
myDateTimeObject.ToString("MMM")
krótkiej nazwy (styczeń, luty, marzec itp.).Jeśli masz określony numer miesiąca
mnthNum
, bez żadnegoDateTime
, zawsze możesz użyć czegoś takiego:lub
Ale to wydaje się trochę niechlujne. Pierwszy przykład wymaga
mnthNum
od 1 do 12. Drugi przykład dopuszcza (prawie) dowolny numer miesiąca i nie jest ograniczony do 1 do 12.źródło