Mathematica中的DateString有问题

Qia*_* Li 3 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"}]

Gar*_*han 6

这看起来像是正确的行为.文件DateString说:"m,d,h,m,s超出正常范围的值会适当减少." 这就是发生的事情:今年2月29日确实没有,但是如果有的话,实际上是3月1日,那确实是星期二.

  • 该文档还给出了[例子](http://reference.wolfram.com/mathematica/ref/DateString.html#47250627)`DateString [{2006,2,31}]`=>`2006年3月3日星期五00: 00:00`. (2认同)

Dr.*_*ius 6

Needs["Calendar`"];
myDay[x_List] := DateString[x, {"DayName"}] /; DateQ[x]  

myDay[{2000, 1, 1}]
->"Saturday"

myDay[{2000, 13, 13}]
->myDay[{2000, 13, 13}]  
Run Code Online (Sandbox Code Playgroud)

当然,如果您愿意,可以抛出一条消息(或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.";
Run Code Online (Sandbox Code Playgroud)