如果我输入
DateString[{2011, 2, 29, 0, 0, 0}, {"DayName"}]
它提供了"Tuesday"
。
而且,
DateString[{2011, 2, 29, 0, 0, 0}, {"DayName"}]
DateString[{2011, 3, 1, 0, 0, 0}, {"DayName"}]
答案 0 :(得分:6)
这看起来像是正确的行为。 DateString
的文档说:“m,d,h,m,s超出正常范围的值会适当减少。”这就是发生的事情:今年2月29日确实没有,但是如果有的那天实际上是3月1日,那确实是星期二。
答案 1 :(得分:6)
Needs["Calendar`"];
myDay[x_List] := DateString[x, {"DayName"}] /; DateQ[x]
myDay[{2000, 1, 1}]
->"Saturday"
myDay[{2000, 13, 13}]
->myDay[{2000, 13, 13}]
当然,如果您愿意,可以抛出一条消息(或Abort []或其他):
Needs["Calendar`"];
Clear@myDay;
myDay[x_] /; If[DateQ[x], True, Message[myDay::nodate, x]; False] :=
DateString[x, {"DayName"}]
myDay::nodate = "The argument `1` is not a valid date.";