日期的格式顺序是当今世界面临的最复杂和分歧最大的问题之一。考虑到我们这么说,我们当中有些人激烈地认为“月/日/年”是适当的。其他人则大声疾呼说,“天/月/年”是最好的,因为它会将术语按其表示的持续时间升序排列。
适可而止。计算机可以简单,公平地解决此争议。您的代码(一个完整的函数或程序)将使用一个以斜杠分隔的日期字符串,例如12/1/2015
。请注意,这是确切的格式,没有前导零,并且末尾有四位数的年份。
- 如果绝对是月/日/年,例如
10/31/1998
,则以该确切格式输出该日期的文本表示,并带有完整的月份名称,日期和年份:October 31, 1998
- 例如,如果绝对是日/月/年
25/12/1989
,则输出相同类型的文本表示形式:December 25, 1989
。 - 如果是月/日/年还是日/月/年的模棱两可,请通过组合以下两个可能的日期来输出可解决歧义的日期:
- 通过取的名字上半年创建一个新的月份名称前面月份和下半年追加后一个月。对于长度不固定的月份,前半部分会收到多余的字母。要明确,月份的第一半部
Janu
,Febr
,Mar
,Apr
,Ma
,Ju
,Ju
,Aug
,Septe
,Octo
,Nove
,和Dece
因此第二半部ary
,uary
,ch
,il
,y
,ne
,ly
,ust
,mber
,ber
,mber
,和mber
。 - 通过将两个可能的天数取平均值来计算天数,当平均值不是整数时取下限。
- 输出该日期的文本表示形式,例如对于
10/8/2011
outputAugber 9, 2011
。
- 通过取的名字上半年创建一个新的月份名称前面月份和下半年追加后一个月。对于长度不固定的月份,前半部分会收到多余的字母。要明确,月份的第一半部
如果输入日期不能是月/日/年或日/月/年(例如13/13/2013
甚至2/30/2002
),则任何行为都是可以接受的。此代码高尔夫,最短的代码获胜!
测试用例:
10/31/1998
给 October 31, 1998
25/12/1989
给 December 25, 1989
10/8/2011
给 Augber 9, 2011
8/5/1957
给 Maust 6, 1957
9/12/2012
(足够)给 September 10, 2012
1/1/2000
给 January 1, 2000
without leading zeroes and with a four-digit year at the end
意味着year >= 1000