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

  • EEVblog2

    EEVblog2

    2 HAZİRAN 2014
  • Elefant Traks

    Elefant Trak

    5 HAZİRAN 2007
  • Tomas N

    Tomas N

    14 Kasım 2010