Python TimeDelta代码在pythonide中工作,但在通过SP运行它时不工作

2024-10-02 20:39:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算一天属于哪个财政周,我的代码在Spyder和PythonTutor中正确运行,但是当我尝试通过SPSS的Python功能运行它时,我得到了一个不同的错误

Spyder中的代码:

from datetime import date, timedelta
VisitDate=date(2017,9,10)

def WhichWeek(DateOfVisit):
   StartDate=date(2017,9,1)
   EndDate=StartDate+timedelta(days=+6)
   Beginning=StartDate
   End=EndDate
   NumberWeeks=10
   for i in range(NumberWeeks):
      if(DateOfVisit>=Beginning and DateOfVisit<=End:
         print('It worked',i)
         return i
      else:
         print ('It failed', i, Beginning, End)
         Beginning=Beginning+timedelta(days=+7)
         End=End+timedelta(days=+7)

WhichWeek(VisitDate)

它运行,并返回预期值(print语句只是用来帮助解决问题的)

但是,当我在SPSS中使用Python扩展运行它时:

begin program.
def WhichWeek(DateOfVisit):
   from datetime import date, timedelta
   StartDate = date(2016,9,1)
   EndDate=StartDate+timedelta(days=+6)
   Beginning=StartDate
   End=EndDate
   NumberWeeks=10
   for i in range(NumberWeeks):
       if DateOfVisit>=Beginning and DateOfVisit<=End:
           print('It worked',i)
           return i
       else:
           print ('It failed', i, Beginning, End)
           Beginning=Beginning+timedelta(days=+7)
           End=End+timedelta(days=+7)

end Program.

SPSSINC TRANS RESULT=Week_Test /FORMULA WhichWeek(VisitDate).
EXECUTE.
FREQUENCIES VARIABLES=Week_Test
  /FORMAT=DFREQ
  /ORDER=ANALYSIS.

它现在给了我一个错误“这个Forumla引用了一个未定义的变量或者无法计算:不能比较datetime.date到float

VisitDate是我的SPSS数据集中定义的一个变量,由于我在Spyder中没有得到这个错误,我不知道在哪里继续进行故障排除

编辑:我把我的Spyder版本从VisitDate1改为VisitDate以限制混乱。我还应该说,在Spyder中,我使用一个静态日期来测试它是否正确识别了一周(2017-09-10),而不是一个实际的数据集。在SPSS中,我对一个数据集运行它


Tags: dateitdaystimedeltaendprintspssspyder