Yerel saat farkı hesabı

Yerel saat farkı hesabı

A ve B noktaları arasındaki zaman farkı nasıl hesaplanır?

Önce bazı coğrafya bilgilerini hatırlayalım:

İngiltere'nin Greenwich gözlemevinden geçen meridyen, başlangıç meridyeni kabul edilir ve 0 derece olarak gösterilir. Doğusunda kalan yerlere doğu yarımküre, batısında kalan yerlere batı yarımküre denir.

Başlangıç meridyeninin 179 doğusunda, 179 batısında ve tam karşısında (180. meridyen) olmak üzere toplam 360 meridyen yayı vardır. 0 (Greenwich) ve 180 derece meridyenleri karşı karşıyadır ve birbirini daireye tamamlar.

  • Her bir meridyen bir büyük dairenin yarısıdır.
  • Tüm meridyenlerin uzunlukları aynıdır.
  • Ekvator ve diğer enlemleri boylamasına keserler.
  • Herhangi iki meridyen arası en uzun mesafe Ekvator üzerinde görülür (111 km).
  • Her meridyen arasında 4 dakikalık zaman farkı vardır.
  • Kutup noktalarında birleşirler.
  • 0 ve 180 derece meridyenleri karşı karşıyadır ve birbirini daireye tamamlar.

Bu bilgiler ışığında yerel saati bilinen bir A noktasına göre, B noktasının yerel saatini hesaplamak için şu kodu kullanabilirsiniz:

int aYari = 1; // 1 = batı yarıküre, 2 = doğu yarım küre
int bYari = 2; // 1 = batı yarıküre, 2 = doğu yarım küre
int aBoylam = 20; // a noktası boylamı
int bBoylam = 10; // b noktası boylamı

// DateTime aZaman = DateTime.Now; // a noktasındaki yerel saat 
// veya belirli bir zaman bilgisi kullanabilirsiniz:
DateTime aZaman = new DateTime(2015, 2, 3, 14, 20, 0);
// 03.02.2015 14:20:00

aBoylam = aBoylam * (aYari == 1 ? -1 : 1);
bBoylam = bBoylam * (bYari == 1 ? -1 : 1);
int boylamFark = bBoylam - aBoylam;
int zamanFark = boylamFark * 4;
DateTime bZaman = aZaman.AddMinutes(zamanFark);

Console.WriteLine("Zaman farkı {0} dk.", zamanFark);
Console.WriteLine (aZaman);
Console.WriteLine (bZaman);

A ve B noktalarının 2 bilgisini bilmemiz gerekiyor.

  1. Batı/Doğu yarıkürelerinin hangisinde bulunuyor?
  2. Boylam / Meridyen bilgisi nedir?

Ekran çıktısı:

Zaman farkı 120 dk.
03.02.2015 14:20:00
03.02.2015 16:20:00

Biraz parametrelerle oynayalım:

int aYari = 2; // 1 = batı yarıküre, 2 = doğu yarım küre
int bYari = 1; // 1 = batı yarıküre, 2 = doğu yarım küre
int aBoylam = 30; // a noktası boylamı
int bBoylam = 40; // b noktası boylamı
DateTime aZaman = new DateTime(2015, 1, 1, 0, 0, 00);

Sonuç:

Zaman farkı -280 dk.
01.01.2015 00:00:00
31.12.2014 19:20:00