Mathematica中的DateString有问题

时间:2011-03-15 01:52:58

标签: wolfram-mathematica

如果我输入

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"}]

2 个答案:

答案 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.";