GetMonthName:有效值介于 1 和 13 之间,包括 1 和 13。为啥?

Posted

技术标签:

【中文标题】GetMonthName:有效值介于 1 和 13 之间,包括 1 和 13。为啥?【英文标题】:GetMonthName: Valid values are between 1 and 13, inclusive. Why?GetMonthName:有效值介于 1 和 13 之间,包括 1 和 13。为什么? 【发布时间】:2011-08-24 21:46:54 【问题描述】:

我不小心将 0 传递给了DateTimeFormatInfoGetMonthName 方法:

DateTimeFormatInfo info = new DateTimeFormatInfo();
var monthName = info.GetMonthName(0);

并收到带有以下错误消息的System.ArgumentOutOfRangeException有效值介于 1 和 13 之间。

传入 1 到 12 会返回“一月”到“十二月”,但传入 13 会返回一个空字符串。

我知道为什么月份数字不是零索引的,但是第 13 个月是干什么用的?

【问题讨论】:

纯属猜测,但农历(例如犹太历)每隔这么多年就会插入一个闰月,因为月份要短得多。 哦,如果是第 13 个月的 13 号星期五,请不要打开你的电脑。 @leppie 请注意,日历和日期是一个滑坡,所以你的“有趣”...当心,这里有龙 :) @Lasse V. Karlsen:我倾向于避免任何包含“posix time”字样的对话;p 显然是在被低估的十二月。 【参考方案1】:

这是因为日历对象可以容纳 13 个月(处理基于阴历月份的日历),请参阅 MSDN:

http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.getmonthname.aspx

日历对象可以容纳 13 个月的日历。对于 12 个月的日历,空字符串始终作为第 13 个月的名称返回。

【讨论】:

【参考方案2】:

根据MSDN

日历对象可以容纳 13 个月的日历。 12个月 日历,空字符串总是 作为 13 号的名字返回 月。

【讨论】:

【参考方案3】:

我猜它是用来确定儒略历中的闰日(http://en.wikipedia.org/wiki/Julian_calendar)。由于大多数人使用公历,所以不用担心。

【讨论】:

-1:不,它适用于农历,它会不时增加一个额外的月份形式以避免偏离太阳年太远。

以上是关于GetMonthName:有效值介于 1 和 13 之间,包括 1 和 13。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

javascript/jquery 介于 -13 和 13 之间的随机数,不包括 -3 和 3 之间的数字

您如何有效地生成介于 0 和上限 N 之间的 K 个非重复整数列表 [重复]

MongoDB Stitch JWT 自定义身份验证:需要有效的 UID(介于 1 到 128 个字符之间)

无论日期如何,检查给定时间是不是介于两次之间

01847. 00000 - “日期必须介于 1 和最后一天之间”

在两列上创建索引以检查日期是不是介于这两个列之间