2009-09-04 49 views
1

在下面顯示的代碼中,我需要操作python中的time var以在python中顯示日期/時間戳來表示該延遲。在python中操作時間

例如,當用戶以小時爲單位輸入延遲時間時,我需要設置jcarddeliver var使用當前日期/時間+延遲的值更新自己。

此外它也應該更新日期var。例如,如果日期是2月24日和時間是15:00,延遲時間爲10個小時,在jcarddeliver日期應更改爲2月25日

jcarddate = time.strftime("%a %m/%d/%y", time.localtime()) 
jcardtime = time.strftime("%H:%M:%S", time.localtime()) 
delay = raw_input("enter the delay: ") 
jcarddeliver = ?? 

我只希望我作出的感覺。

回答

3

你可以嘗試datetime模塊,例如

import datetime 
now = datetime.datetime.now() 
delay = float (raw_input ("enter delay (s): ")) 
dt = datetime.timedelta (seconds=delay) 
then = now + dt 
print now 
print then 
+0

從我看到的情況來看,現在和接下來的變量只能使用打印模塊正確顯示。如果我必須將這些值傳遞給數據庫,該怎麼辦?它給我一個錯誤說,並非所有在字符串格式化過程中轉換的參數。 – amit

+0

在上面的例子中,變量'now'和'then'是日期時間對象。當你打印它們時,它們被轉換成一個字符串。如果你真的想要一個字符串,請嘗試str()函數,例如STR(現在)。當然,您也可以使用now.year,now.month等。更多信息請參見http://docs.python.org/library/datetime.html。 –

0

「我需要設置jcarddeliver VAR自身與當前日期/時間+延遲值更新」

如何重整這

jcarddeliver應爲當前日期時間加上延遲。

「更新本身」並不完全明智。

嘗試以下操作:

  1. 嘗試計算「當前日期與時間加上延遲」

  2. 打印結果的最明顯的方式。

  3. 對此結果嘗試使用localtime()。你得到了什麼?

1

time.time()的結果是自Epoch以來秒數的浮點值。您可以添加秒這個值和使用time.localtime()time.ctime()等功能,得到的結果以各種形式:

>>> now = time.time() 
>>> time.ctime(now) 
'Fri Sep 04 16:19:59 2009' # <-- this is local time 
>>> then = now + (10.0 * 60.0 * 60.0) # <-- 10 hours in seconds 
>>> time.ctime(then) 
'Sat Sep 05 02:19:59 2009' 
+0

我會用Brian的解決方案(http://stackoverflow.com/questions/1381315/manipulating-time-in-python/1381769)因爲'datetime.timedelta ()'用法相當清楚。 –

0

試試這個:

now = time.time() 
then = now + 365*24*3600 
print time.strftime('%Y-%m-%d', time.localtime(then))