1. 程式人生 > >python datetime和str轉換 計算時間差;Python 函式接收元組和字典引數

python datetime和str轉換 計算時間差;Python 函式接收元組和字典引數

server上跑housecleaning的指令碼,需要比較時間內容

例如t1 和t2都是datetime.datetime型別,則可以通過下面的sample code來計算二者的時間差

def __time_diff(t1,t2):
    seconds = (t1-t2).seconds
    return seconds
但是如果t1或者t2是一個字串的時間表示呢?

例如:

t1 = 2014-09-02 10:43:55

則需要把這個str轉換為datetime型別:

def __str2time(s):
    t = time.strptime(s,'%Y-%m-%d %H:%M:%S')
    latest_active_time = datetime(*t[:6])
    return latest_active_time
其中,time.strptime的第一個引數是表示時間的一個字串,第二個引數是轉換模式

t[:6]是一個包含6個元素的元組

至於那個*號是幹什麼的,我也不知道,只能去學習一下了。。參考2的內容

對於def func(*args):,*args表示把傳進來的位置引數儲存在tuple(元組)args裡面。例如,呼叫func(1, 2, 3) ,args就表示(1, 2, 3)這個元組 。

例如:

>>> def func(*x):
if len(x)==0:
print 'None'
else:
print x
>>> func(1)
(1,)        #存放在元組中


>>> func()
None
>>> func(1,2,3)
(1, 2, 3)

那如果想直接傳一個元組給這個函式呢?例如t=(1,2,3),那麼在元組名前面加*,就可以傳給func方法了。

而對於def func(**args):,**args表示把引數作為字典的健-值對儲存在dict(字典)args裡面。例如,呼叫func(a='I', b='am', c='wcdj') ,args就表示{'a':'I', 'b':'am', 'c':'wcdj'}這個字典 。

同理,如果想傳一個字典給func函式,則需要使用**,即d={'a':'fuck', 'b'='shit'},則使用func(**d)即可。

reference:

1. http://www.cnblogs.com/finallyliuyu/archive/2012/02/17/2356160.html

2. http://blog.csdn.net/delphiwcdj/article/details/5746560

3. http://www.cnblogs.com/smiler/archive/2010/08/02/1790132.html