“Bazı şeylerin gitmesine izin vermek işte bu nedenle çok önemlidir. Onları serbest bırakmak. Gevşek olanı kesmek. İnsanların hiç kimsenin işaretli kağıtlarla oynamadığını anlaması gerekiyor; bazen kazanırız ve bazen kaybederiz. Hiçbir şeyi ger almayı bekleme, yaptıkların için takdir edilmeyi bekleme, ne kadar zeki olduğunun keşfedilmesini bekleme ya da aşkının anlaşılmasını. Daireyi tamamla. Gururlu, yetersiz ya da kibirli olduğun için değil, sadece artık onun senin yaşamında yeri olmadığı için. Kapıyı kapat, plağı değiştir, evi temizle, tozdan kurtul. Geçmişte olduğun kişi olmayı bırak ve şu an kimsen o ol.”
by Paulo Coelho - Zahir S. 204

Coğrafi Konuma Göre Zaman Dilimini Tespit Etme

Tarih: Kasım 4th, 2012 | Yazar: | Kategoriler: Dışlananlar | Etiketler: , , , , | Yorum Yok »

Dünyanın tüm bölgelerine hitap eden bir web siteniz veya bir uygulamanız varsa, kullanıcıların içinde bulundukları saat dilimleri önemlidir. Bu duruma örnek vermek gerekirse; İngiltere’de bulunan bir üyeniz Türkiye’de bulunan bir üyeye sizin Amerika’da bulunan sunucunuz üzerinden mesaj attığını düşünürseniz, 3 farklı zaman dilimi ile uğraşmanız gerekmektedir. Yani İngiltere’den mesaj atan üyeye mesaj tarihini, İngiltere’nin zaman dilimine göre göstermeniz gerekir. Aynısı Türkiye’deki üye için de geçerlidir.

Kullanıcılara doğru tarihi göstermek için genelde zaman dilimini kullanıcıya sorarak öğreniriz. Bu yöntemi her zaman uygulayamayabiliriz veya daha pratik şekilde çözmek isteyebiliriz. Bu noktada bu yazının konusu olan, konuma göre zaman dilimi öğrenme çözümü derdimize derman olacaktır.

Google Maps API Web Servislerine yeni dahil olan The Google Time Zone API (Deneysel) ile konuma göre zaman dilimini öğrenebiliyoruz artık. Hem de oldukça kolay bir şekilde. Gelin bir bakalım…

İstekleri Yapacağımız URL:

https://maps.googleapis.com/maps/api/timezone/çıktı formatı(xml|json)?parametreler

İstekte Kullanacağımız Parametreler

  • location: Zaman dilimini öğreneceğimiz konumun bilgisi. Enlem(latitude) ve boylam(longitude) bilgilerini araya bir virgül(,) koyarak kullanıyoruz. Örnek: 39.926562,32.817512
  • timestampZaman dilimini öğreneceğimiz konumun timestamp olarak zaman bilgisi. Yani, Ankara’nın şu anki zaman dilimini öğrenmek istiyorsak güncel timestamp bilgisini, bir ay önceki zaman dilimini öğrenmek istiyorsak bir ay önceki timestamp bilgisini girmeliyiz. Örnek: 1352052772
  • sensor: Konum bilgisini GPS kullanarak öğrendiyseniz true değilse false

Yukarıdaki parametrelerin kullanılması zorunlu bunun dışında language parametresini kullanarak gelen cevabın hangi dilde üretilmesi gerektiğini belirleyebilirsiniz. Örnek: Türkçe için tr

Cevap Elementleri

  • dstOffset: Bu bilgi bize, konumun ne kadar gün ışığından(yaz saati uygulaması) yararlandığını verir. Örnek: Türkiye’de yaz saati uygulandığı bir zamanı timestamp olarak gönderirsek sunucuya bu değer 3600(saniye cinsinden) olacaktır yani bir saat gün ışığından faydalandığımızı gösterir.
  • rawOffset: Bu bilgi bize, konumun Eşgüdümlü Evrensel Zaman (UTC) ile olan farkını verir. Bu farkın içine gün ışığından yararlanma farkı dahil değildir. O yüzden konum için gün ışığından yararlanma söz konusu ise bu iki bilgiyi aynı anda değerlendirmekte fayda var.
  • timeZoneId: Bu bilgi ile zaman dilimi ID’sini öğrenebiliriz. Örnek: Türkiye için Europe/Istanbul değeri gelecektir. Küçük bir not: Bu element üzerinden gelecek bilgi PHP’deki zaman dilimi ID’leri ile aynı. Dönüştürme işlemi olmadan direkt kullanbilirsiniz.
  • timeZoneName: timeZoneId bilgisi teknik tarafta işe yarayacaksa bu bilgi de kullanıcı tarafında işe yarayabilir. Zaman dilimi bilgisini kullanıcının anlayacağı şekilde bu alan üzerinden öğrenebiliriz. Örnek: Türkiye için gelen değer bu şekilde olacaktır; Doğu Avrupa Standart Saati

Örnekler

Konum Ankara, Tarih: 4 Kasım 2012, Saat: 21:18:32 için Örnek Bir İstek ve Cevap

İstek:

https://maps.googleapis.com/maps/api/timezone/json?location=39.92077,32.85411&sensor=true&timestamp=1352056712&language=tr

Cevap:

{
   "dstOffset" : 0.0,
   "rawOffset" : 7200.0,
   "status" : "OK",
   "timeZoneId" : "Europe/Istanbul",
   "timeZoneName" : "Doğu Avrupa Standart Saati"
}

Konum Ankara, Tarih: 12 Temmuz 2012, Saat: 03:31:52(yaz saati uygulanan bir zaman) için Örnek Bir İstek ve Cevap

İstek:

https://maps.googleapis.com/maps/api/timezone/json?location=39.92077,32.85411&sensor=true&timestamp=1342056712&language=tr

Cevap:

{
   "dstOffset" : 3600.0,
   "rawOffset" : 7200.0,
   "status" : "OK",
   "timeZoneId" : "Europe/Istanbul",
   "timeZoneName" : "Doğu Avrupa Yaz Saati"
}

Bonus

  • Konumu(enlem ve boylam) adres bilgisi üzerinden öğrenmek için bu yazımı okuyabilirsiniz.
  • Konumu Geolocation üzerinden öğrenmek için bu yazımı okuyabilirsiniz.
  • Konuyla ilgili Google Maps’in dökümanına buradan ulaşabilirsiniz.