Что-то не так с DateString в Mathematica - PullRequest
3 голосов
/ 15 марта 2011

Если я наберу

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 ]

6 голосов
/ 15 марта 2011
Needs["Calendar`"];
myDay[x_List] := DateString[x, {"DayName"}] /; DateQ[x]  

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

myDay[{2000, 13, 13}]
->myDay[{2000, 13, 13}]  

Конечно, вы можете выбросить сообщение (или прервать [], или что-то еще), если хотите:

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.";
6 голосов
/ 15 марта 2011

Это выглядит как правильное поведение. Документация для DateString гласит: «Значения m, d, h, m, s вне их нормальных диапазонов соответственно уменьшены». именно это и произошло: на самом деле 29 февраля этого года не было, но если бы это было, то это был бы тот же день, что и 1 марта, то есть действительно вторник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...