2010-05-07 81 views
1

我扳起这件事,它应该是很简单的,但sortdate的值是无(注意我只是这样做是因为一个字符串转换为Python中的日期是不好的毛病)。Python的拆分使用

DateToPass = str(self.request.get('startdate')) 
mybreak.startdate = DateToPass 
faf = DateToPass.split('-') 
sortdate = str(faf[2] + faf[1] + faf[0]) 

这应该有效吗?但它只是存储为空,尽管datetopass存储正常。

+1

你没有真正把它放在模型(你的意思是mybreak.sortdate = ...?)。那是故意的吗?此外,使用DateTimeProperty会使这更简单。 – 2010-05-07 16:45:25

+1

你需要告诉我们你想要分割的字符串是什么样子 - 一些例子。 – eemz 2010-05-07 17:25:59

+0

对不起,这是该类代码的“剪辑”。 mybreak是模型(早先指定mybreak = MyBreak())。传递的字符串是21-07-2010;我正在分配其他各种文本,这些文本在我推送数据时工作正常并且正在存储; mybreak.put()'转换'日期被存储为空。 – 2010-05-07 19:45:00

回答

1

如果输入的日期格式为“YYYY-MM-DD”,那么你的代码shold做工精细。有一些额外的str()调用,是的,使用strptime会更合适,但没有什么应该打破。

例如,这个工程:

Python 2.5.2 (r252:60911, Apr 15 2008, 11:28:25) 
[GCC 3.4.6 20060404 (Red Hat 3.4.6-9)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> startdate = '2002-04-20' 
>>> splitdate = startdate.split('-') 
>>> type(splitdate[0]) 
<type 'str'> 
>>> splitdate[2]+splitdate[1]+splitdate[0] 
'20042002' 

所以这两个地方我想看看是:

  1. 什么是你从self.request.get得到的格式( '开始日期')并存储在DateToPass中?
  2. 您还没有表现出我们的代码,你 sortdate。它坏了吗?
+0

商店工作正常,作为字符串存储日期,但它是存储重组日期(如代码块)为空;模型中的所有其他数据都很好。因此,我认为分裂的工作方式不同,或者我完全错误:o)...你们回答这个问题,因为它被问到(关于分裂),这很容易理解,因为我将会使用它很多。谢谢,现在我可以回到C++了; o) >>如下所示,我错过了字符串argh开头的f#@ ing模型 – 2010-05-07 19:49:45

+0

感谢帮助小伙们:) – 2010-05-07 19:55:02

1

如果真实问题是将字符串转换为时间,如您所指出的,那么你有没有看过time.strptime

+0

它对我最初想要达到的日期类型;并且你们是在那个兔子洞下面;我认为根据YYmmdd添加这个额外的列进行排序就足够了,因为这是一项急需的工作。 – 2010-05-07 15:47:06

4

这将是有益的,看看有什么self.request.get('startdate')样子。它是ISO(YYYY-MM-DD)吗?如果是这样,我将使用datetime来举例说明。有没有必要,因为datetime.datetime.strptime分裂:

>>> import datetime 
>>> date_to_pass = '2010-05-07' 
>>> sortdate = datetime.datetime.strptime(date_to_pass, '%Y-%m-%d') 
>>> sortdate 
datetime.datetime(2010, 5, 7, 0, 0) 

datetime对象可排序的,所以没有必要转换为字符串。除非我错过了你的问题的重点。

+0

对不起,延时长途回家。 日期以英国格式输入(dd-mm-YY)21-05-2010;我可能应该在本地测试一下,现在我不是在远程桌面上工作,但基本上所有的路由都会导致在字符串出错时使用'%d-%m-%Y',这使我在野外开始了鹅追逐。我希望我会尝试此代码现在和它的工作; o)继承人希望 – 2010-05-07 19:47:01

+0

感谢您的帮助 – 2010-05-07 19:54:44

+0

很高兴帮助。在这种情况下,你的格式字符串将是“%d-%m-%y''(年份为小y,世纪+年份为大Y)。 – jathanism 2010-05-07 21:34:04