2015-01-26 11 views

cevap

8

ben sadece hh dönüştürmek için biliyorum. Geçmişi bir önceki süreden bir kaç milisaniyeye dönüştürebilirsiniz. İnsanlar bunu çoğunlukla 1 Ocak 1970’te saat 12:00 ya da 1900’te yapıştırırlar ve bu noktadan bu süreyi milisaniye olarak tamsayı olarak ölçerler. datetime modülünün (ya da benzeri başkalarının) bunu sizin için yapacak işlevleri vardır; Sadece milisaniyeye dönüştürmek için Google.

2012: Eğer anlam bunu yapmak için yıl, ay ve günü, tek yön kodlamak istiyorsanız

tamsayı basamağı içinde onları yan yana kadar büyük sipariş-of-büyüklük değerlerine göre bu bileşenleri çarpmak etmektir -06-13 -> 20120613 = 10.000 * (2012) + 100 * (6) + 1 * (13)

def to_integer(dt_time): 
    return 10000*dt_time.year + 100*dt_time.month + dt_time.day 

Örn

In [1]: import datetime 

In [2]: %cpaste 
Pasting code; enter '--' alone on the line to stop or use Ctrl-D. 
:def to_integer(dt_time): 
: return 10000*dt_time.year + 100*dt_time.month + dt_time.day 
: # Or take the appropriate chars from a string date representation. 
:-- 

In [3]: to_integer(datetime.date(2012, 6, 13)) 
Out[3]: 20120613 

Ayrıca, dakikalar ve saniyeler de istiyorsanız, yalnızca rakamları görüntülemek için gerektiğinde daha büyük boyutlar ekleyin.

Eski sistemlerde, özellikle eski SQL veritabanlarından veri tabanlı verileri çeken sistemlerde bu ikinci yöntemi sık sık karşılaştım.

çok kötü. Tarihleri ​​hizalamak, ay veya gün ofsetlerini tamsayı biçiminde göründüğü gibi hesaplamak için çok fazla hacky kodu yazıyorsunuz (örneğin, Aralık ayını geçtikçe ayın 1'ini geri almak, ardından yıl değerini arttırmak) ve kazan plakası için her yerde tamsayı formatına dönüşümü.

Böyle bir sözleşme, üzerinde çalıştığınız API'nin derin, düşük düzeyli ve kapsamlı olarak test edilmiş bir bölümünde bulunmadığı sürece, verileri kullanan herkesin gerçekten bu tamsayı gösterimi ve tüm yardımcılarına güvenebileceği şekilde çalışabilirsiniz. İşlevler, daha sonra birçok insanın temel tarih işleme rutinlerini her yerde yeniden yazmasını sağlayın.

datetime.date gibi bir tarih bağlamında değeri bırakmak için genellikle mümkün olduğu kadar çok daha iyi olur, böylece işlemlerin doğal, tarih temelli bir bağlamda ifade edildiği ve bazı geliştiricilerin değil kişisel bir tamsayıya kesmek.