在 .NET Framework 中,月份名称基于文化。如果我清楚地理解您的问题,您想选择一些“日历”并列出其中的几个月。我认为这种方法存在问题,因为不同的文化可能使用相同的日历,而这些不同的文化可能有不同的月份名称。
例如,我们以GregorianCalendar 为例,如果你想列出基于英语的月份名称,你可以清楚地使用像InvariantCulture 这样的文化,你会得到January、February , March 等。但另一方面,土耳其文化 (tr-TR) 也使用 GregorianCalendar 作为日历,但它的月份名称类似于 Ocak、Şubat、Mart 等。这意味着,即使您为日历选择“正确的”CultureInfo,您也可能遇到语言问题。我希望你能理解我的担心。一个日历月可能有不同的语言,因为它们属于文化。
如果您真的想根据日历获取这些信息,您可以创建一个 CultureInfo,它使用选定的 Calendar 并将其 MonthNames 属性列为从当前月份开始的字符串数组。
例如;对于GregorianCalendar,您可以使用InvariantCulture 的月份名称;
CultureInfo.InvariantCulture.DateTimeFormat.MonthNames
一月
二月
行进
四月
可能
六月
七月
八月
九月
十月
十一月
十二月
对于HijriCalendar,您可以使用ar-SA 文化(它使用UmAlQuraCalendar,在我看来与HijriCalendar 非常接近)哪个月份的名称是;
(new CultureInfo("ar-SA")).DateTimeFormat.MonthNames
推荐
回复
ربيع الأول
ربيع الآخر
جمادى الأولى
جمادى الآخرة
ㄧㄧ
شعبان
关注
شوال
ذو القعدة
呸呸呸呸
它们可以翻译成英文;
可以得到当前月份的编号为;
var currentMonthNo = Datetime.Now.Month;
然后你可以从它的前一个索引(因为数组开始索引 0)开始迭代到数组的末尾(注意,有些日历有 13 个月,这就是为什么 12月文化数组的第13个元素是一个空字符串。)