Konum verilerine sahip çok sayıda insan var. Modüllerimden biri bu veri kümesini yalnızca ONCE üzerinden yürütür ve veri tabanımdaki konum verilerini zaman dilimi ile eşleştirmek için bir tablo oluşturur. Bu modül geocoders, tzwhere ve puts.timezone kullanır. Bundan sonra, yöneticinin bu kişilere e-posta göndermek istediği her seferinde, Django uygulamam, her bir kişinin geçerli saatini belirlemek için o saat dilimi eşleme tablosunu kullanır ve e-posta göndermek için iyi bir zaman değilse, yöneticiyi raporlar.Python Şehir ve Eyalet veya Ülke veya Şehirde Geçerli Saat
Konum verileri şehir ve eyalet veya ülke adlarını içerir. Bu amaçla
, şu dört kütüphaneleri kombine: zaman dilimi eşleştirme tablosunu oluşturmak amacıylafrom datetime import datetime
from geopy import geocoders
from tzwhere import tzwhere
from pytz import timezone
, benim modül aşağıdaki örnek koda benzer bir şey yapar:
g = geocoders.GoogleV3()
tz = tzwhere.tzwhere()
locationList = ["Sackville, Canada", "Romania", "Mannheim, Germany", "New Delhi, India", "Trier, Germany", "Basel, Switzerland", "Bruxelles/Brussel, Belgium"]
for location in locationList:
place, (lat, lng) = g.geocode(location)
timeZoneStr = tz.tzNameAt(lat, lng)
timeZoneObj = timezone(timeZoneStr)
# Store timeZoneObj in the timezone mapping table.
Ardından, yönetici her e-posta göndermek istediğinde, Django uygulaması her kişinin saat diliminden geçer ve bulunduğu bölgedeki geçerli saati tanımlar.
# for each person:
# find the location and timezoneObj data for this person in the database.
now_time = datetime.now(timezoneObj)
print now_time
İşte çıkışı: Bir örnek kod aşağıdaki gibidir Bunu yapmanın bir daha verimli bir şekilde
Sackville, Canada : 2015-06-26 22:00:18.131000-03:00
Romania : 2015-06-27 04:00:18.240000+03:00
Mannheim, Germany : 2015-06-27 03:00:18.371000+02:00
New Delhi, India : 2015-06-27 06:30:18.531000+05:30
Trier, Germany : 2015-06-27 03:00:18.656000+02:00
Basel, Switzerland : 2015-06-27 03:00:18.812000+02:00
Bruxelles/Brussel, Belgium : 2015-06-27 03:00:18.921000+02:00
var mı?
çizgisinde bir şey daha deneyin? – IronManMark20
Evet. Tüm konum verilerini içeren bir csv dosyası var, ancak maalesef konum verileri standart değil. Örnekte gördüğünüz gibi, bazıları şehir ve eyalet, diğerleri ise sadece ülke adlarıdır. Ülke isimleri durumunda, genellikle küçük ülkelerdir. Manuel olarak kontrol ettim ve ülkeler açısından oldukça eminim, onların içinde çok sayıda zaman dilimi yok. – 1man
ile ilgili: [Python/Django'daki Şehirden Saat Dilimi Alın] (http://stackoverflow.com/q/16505501/4279) – jfs