SORU
19 EYLÜL 2008, Cuma


Ne N saniye datetime eklemek için standart yoludur.Python zaman?

Python datetime.time değer verilen, 8 *3 = * 9*,* örneğin işte saniye bir tamsayı eklemek için standart bir yol.

Bu açık fikirler işe yaramaz:

>>> datetime.time(11, 34, 59)   3
TypeError: unsupported operand type(s) for  : 'datetime.time' and 'int'
>>> datetime.time(11, 34, 59)   datetime.timedelta(0, 3)
TypeError: unsupported operand type(s) for  : 'datetime.time' and 'datetime.timedelta'
>>> datetime.time(11, 34, 59)   datetime.time(0, 0, 3)
TypeError: unsupported operand type(s) for  : 'datetime.time' and 'datetime.time'

Sonunda bu gibi işlevleri yazdım:

def add_secs_to_time(timeval, secs_to_add):
    secs = timeval.hour * 3600   timeval.minute * 60   timeval.second
    secs  = secs_to_add
    return datetime.time(secs // 3600, (secs % 3600) // 60, secs % 60)

Fakat bunu gerçekleştirebilmek için daha kolay bir yol eksik olduğumu düşünmeden edemiyorum.

İlgili

CEVAP
19 EYLÜL 2008, Cuma


Sahte bir tarih time sadece zaman değerini kullanarak sağlayarak timedelta ve datetime tam değişken kullanabilirsiniz.

Örneğin:

import datetime
a = datetime.datetime(100,1,1,11,34,59)
b = a   datetime.timedelta(0,3) # days, seconds, then other fields.
print a.time()
print b.time()

iki değer, üç saniye arayla sonuçları:

11:34:59
11:35:02

Ayrıca daha okunabilir için tercih olabilir

b = a   datetime.timedelta(seconds=3)

öyle bir isteğiniz varsa.


Eğer bunu yapabilen bir fonksiyon sonra iseniz, aşağıda addSecs kullanarak içine bakabilirsiniz:

import datetime

def addSecs(tm, secs):
    fulldate = datetime.datetime(100, 1, 1, tm.hour, tm.minute, tm.second)
    fulldate = fulldate   datetime.timedelta(seconds=secs)
    return fulldate.time()

a = datetime.datetime.now().time()
b = addSecs(a, 300)
print a
print b

Bu çıkışları:

 09:11:55.775695
 09:16:55

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • julioissk84life

    julioissk84l

    18 ŞUBAT 2008
  • ravinderosahn

    ravinderosah

    20 Temmuz 2009
  • TheScorpioTechno

    TheScorpioTe

    15 Aralık 2010