2011-11-02 17 views
9

C#/NET platformunda bir haber bülteni gönderme uygulaması geliştiriyorum. Kısa bir süre önce maxmind.com veritabanını kullanarak IP adresini kullanarak bir alıcı ülke ve bölgesini almak için modülü ekledim.Saat dilimine göre Ülke ve Bölge

Country Code: DE 
Country Name: Germany 
Region Name: Hessen 
City:   Frankfurt Am Main 
Latitude:  50.1167 
Longitude: 8.6833 

Şimdi ne gerek bu bilgileri kullanarak kullanıcının saat dilimini elde etmektir:

Örneğin, ben bazı örnek bir IP adresi için aşağıdaki bilgileri alabilirsiniz.

Ayrıca saat dilimini sağlayan bazı GeoIp veritabanları olduğunu biliyorum, ancak bu somut GeoIp veritabanını kullanmam gerekiyor. Ayrıca, javascript'in zaman ofsetini belirleme yaklaşımı burada kullanılamaz.

Ülke ve bölge adını kullanarak saat dilimini bir şekilde alabilir miyim?

+0

Latitude'u [bu yaklaşımlar] 'dan herhangi biriyle kullanabilirsiniz (http://stackoverflow.com/a/16086964/634824) –

cevap

9

Son olarak, uzun araştırmalardan sonra, ben bir çözüm buldum bakın. Çok doğru olmayabilir, ancak uzaktan hizmetin bağımlılığını gerektirmez.

Ben MaxMind veritabanı Olsen veritabanından bölgeler ve zaman dilimleri arasındaki eşleme dosyası (aka tz veritabanı) sağladığını tespit ettik: http://www.maxmind.com/timezone.txt

İkinci adım .NET saat dilimlerinde Olsen saat dilimleri dönüştürmek oldu. En uygun çözüm burada bulundu: http://www.timdavis.com.au/data/olson-time-zone-database-to-standard-windows-time-zone-v01/ Bu yüzden biraz düzenledim ve .NET'ten okumak için CSV dosyasına dönüştürdüm. Birisine yardım edeceğini umuyorum. Eğer maxmind API bir DatabaseReader Nesne kullanırken bir özellik location.timeZone sen tarafından döndürülen nesneden alabilmesi zaten orada var içinde

+1

Yanıtınızı kabul etmeyi unutmayın, çünkü [kendi sorunuza cevap veriniz] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/). –

2
+0

Teşekkürler. Ilginç hizmet. Gelecekte 1 milyondan fazla alıcıya sahip olabileceğimiz için bazı çevrimdışı temelli yaklaşımları aramaya çalışacağım, ancak bu çözüm benim durumumda çok faydalı – VirusX

+0

@VirusX - Eğer milyonlarca istekten bahsediyorsanız, ücretsiz bir servis. Tabii ki Javascript ücretsiz olacak, bunu yapabileceğiniz pek çok yol, sadece kontrol altında bir javascript sayfası olan bir sayfaya bir http isteği kullanarak dahil. –

+0

@Ramhound - Yukarıda bahsettiğim gibi, javascript isteğin doğası gereği burada kullanılamaz. Işaret url'si, 'img' etiketinin src' parametresinde bulunur. Kullanıcı e-posta iletisini açtığında, istek hizmetimize gidecektir. Tek sahip olduğumuz, http başlık ve alıcının ip adresidir. Milyonlarca olarak - genellikle, dakika başına milyonlarca istek olduğu anlamına gelmez, ancak bu, saniyede birkaç talepten daha fazla olabilir. Yani, dediğim gibi, bunu yapmak için bazı çevrimdışı veritabanları bulmaya çalışıyorum. – VirusX

1

O ..

bu soru sorulmuştur beri bir süre oldu, ama başkalarına yardım olabilir GeoIP Sınıfı, maxmind'den API docs'a bakın.

+0

Yep, 2011'de GeoIP2 bulunamadı. Şimdi bunun için basit bir API var. – VirusX

İlgili konular