Saya ingin melihat apakah ada pencacahan resmi selama berbulan-bulan dalam kerangka .net.
Tampaknya mungkin bagi saya bahwa ada satu, karena seberapa umum penggunaan bulan, dan karena ada pencacahan lain dalam kerangka .net.
Misalnya, ada pencacahan untuk hari dalam seminggu, System.DayOfWeek, yang mencakup Senin, Selasa, dll.
Saya bertanya-tanya apakah ada yang untuk bulan-bulan dalam setahun, yaitu Januari, Februari, dll?
Apakah ada yang tahu?
c#
.net
datetime
enumeration
Mark Rogers
sumber
sumber
Tidak, tidak ada.
sumber
Microsoft.VisualBasic.MonthName
?Tidak.
Inilah yang saya siapkan sebelumnya. (Versi C #)
sumber
NotSet
? Mengapa Tidak Mulai SajaJanuary = 1
? maka Anda bisa menyingkirkan tugas lainnya juga ..January
jika, misalnya, digunakan sebagai properti untuk kelas. dalam banyak kasus saya tidak menginginkannya, saya ingin memiliki nilai 'null' sebelum secara eksplisit ditetapkanNotSet
dihilangkan danJanuary = 1
(dan nilai lainnya adalah 2, 3, dll.) Maka default enum ini adalah(Month)0
DateTimeFormatInfo.CurrentInfo.MonthNames
(bukan enum, tapi menurut saya contoh CurrentInfo DateTimeFormatInfo adalah apa yang Anda cari secara umum). Jika Anda menginginkan daftar drop-down, Anda dapat membuatnya seperti ini:sumber
var months = Enumerable.Range(0, 11).Select(m => new KeyValuePair<int, string>(m + 1, DateTimeFormatInfo.CurrentInfo.MonthNames[m]));
Ditemukan satu di enum "MonthNamesType" namespace ini: Microsoft.ServiceModel.Channels.Mail.ExchangeWebService.Exchange2007
Lokasinya agak menakutkan tapi tetap ada di sana.
sumber
Apa sebenarnya yang ingin Anda capai?
jika yang Anda inginkan hanyalah dua belas string dengan bulan dalam tahun yang dijabarkan, maka itu tersedia melalui string format kustom - diterapkan untuk setiap contoh datetime,
jika Anda hanya ingin dapat menentukan bulan sebagai properti enumerasi dari beberapa tipe objek lain, maka properti Bulan dari bidang DateTime mengembalikan integer dari 1 hingga 12 ...
sumber
Ya, pasti ada. Itu adalah bagian dari namespace Microsoft.VisualBasic ...
Dan bagi Anda yang memiliki masalah dengan namespace ini, Anda harus memahami bahwa itu benar-benar .NET, dan itu tidak akan berhasil .
Sebagai catatan,
MonthName
fungsi secara internal memanggil yang berikut ...sumber
IEnumerable
tetapi bukanenum
erasi. Jadi tidak berhasil.Beberapa kalender memang memiliki lebih dari 12 bulan: http://en.wikipedia.org/wiki/Month tetapi saya tidak dapat mengatakan apakah itu alasan MS tidak membuat enum di .NET.
Untuk yang malas seperti saya yang ingin di copy / paste, di VB:
sumber
Saya tidak tahu pasti, tapi firasat saya tidak. DateTime.Month mengembalikan integer. Jika ada pencacahan seperti itu, mungkin akan dikembalikan oleh DateTime.
sumber
Saya akan mencari sesuatu seperti ini untuk dikodekan, sebagai
memiliki angka ajaib 1 di dalamnya. sedangkan
mendokumentasikan diri sendiri
sumber
Enum akan lebih berguna, tetapi Anda bisa mendapatkan hasil yang diinginkan dengan format:
Ini mengembalikan nama bulan penuh (Januari, Februari, dll.). Gunakan
myDateTimeObject.ToString("MMM")
untuk nama pendek (Jan, Feb, Mar, dll.).Jika Anda memiliki nomor bulan tertentu
mnthNum
, tanpa nomorDateTime
, Anda selalu dapat menggunakan sesuatu seperti ini:atau
Tapi sepertinya agak berantakan. Contoh pertama mensyaratkan
mnthNum
antara 1 dan 12. Contoh kedua memungkinkan untuk (hampir) nomor bulan apa pun dan tidak terbatas pada 1 hingga 12.sumber