2017-08-31 93 views
1

我是python的新手,我試圖讓自7:00以來每天都過去的實際分鐘數。 我正在使用mktime在幾秒鐘內獲得now_date1和now_date2,然後計劃它將減去60除以得到分鐘。 但我得到以下錯誤:將當地時間轉換爲UNIX

AttributeError: 'str' object has no attribute 'timetuple'

它這是正確的做法?

這是代碼

import time 
import pytz 
from datetime import datetime 
from time import mktime as mktime 

now_date = datetime.now(pytz.timezone('Europe/Bucharest')) 
now_date1 = now_date.strftime('%H:%M:%S') 
now_date2 = now_date.strftime('7:00:00') 
# Convert to Unix timestamp 
d1_ts = time.mktime(now_date1.timetuple()) 
+0

'strftime'返回一個字符串。您需要將'now_date2'轉換爲時間結構並執行時間增量。 –

回答

1

strftime返回一個字符串。不是你想要的。

你非常接近,但沒有必要把time放在一起。只需修改您這樣的代碼,並使用來自datetime增量(由How to calculate the time interval between two time strings啓發):

import pytz 
from datetime import datetime 

now_date = datetime.now(pytz.timezone('Europe/Bucharest')) 

from datetime import datetime 
FMT = '%H:%M:%S' 
now_date1 = now_date.strftime(FMT) 
now_date2 = now_date.strftime('7:00:00') 

tdelta = datetime.strptime(now_date1, FMT) - datetime.strptime(now_date2, FMT) 

print(tdelta) 

我得到:6:40:42這似乎匹配,因爲它是12:42在這裏。

要得到的結果在幾分鐘內就去做:

tdelta.seconds//60 

(注意,日期只有正確小時/次/秒,年,月,等是1900 ......因爲他們」不習慣)

+0

非常好。現在我只需要將tdelta轉換爲分鐘。非常感謝你 ! –

+0

看我的編輯。 'tdelta.seconds // 60' –

0

我覺得這樣的事情可能工作:

import time 
import datetime 
from time import mktime as mktime 

#current time 
now_date = datetime.datetime.now() 

#time at 7am 
today = datetime.date.today() 
now_date2 = datetime.datetime(today.year, today.month, today.day, 7, 0, 0, 0) 

#difference in minutes 
(now_date - now_date2).days * 24 * 60