2010-05-07 64 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