2016-01-28 6 views
0

Мне нужно знать, как получить местное время в определенный момент в любом месте на глобусе.Как получить местное время в определенный момент в любом месте на земном шаре

Что-то вроде этого:

DateTime localTime = GetLocalTime(utcDateTime, city); 

или

DateTime localTime = GetLocalTime(utcDateTime, longitude, latitude); 

Есть некоторые API в NET Fx или Windows API или глобальный веб-службы, чтобы получить местное время в определенный момент в местоположение на глобуле?

+1

Получить часовой пояс: [? Как получить часовой пояс из местоположения, используя координаты широты и долготы] (http://stackoverflow.com/questions/16086962/how-to-get-a-time -zone-from-a-location-using-широта-долгота-координаты), а затем получить время. –

ответ

1

Вы можете использовать Google API SDK для получения местоположения. https://developers.google.com/maps/documentation/timezone/intro

public DateTime GetLocalTime(
DateTime utcDate, double latitude, double longitude) 
{ 
var request = new TimeZoneRequest 
{ 
ApiKey = _apiConfiguration.GoogleApiKey, 
Location = new Location(latitude, longitude), 
TimeStamp = utcDate, 
Sensor = false 
}; 

var response = GoogleMaps.TimeZone.Query(request); 

if (response.Status != GoogleMapsApi.Entities.TimeZone.Response.Status.OK) 
return utcDate; 

var offset = TimeSpan.FromSeconds(response.RawOffSet + response.OffSet); 
var timeZone = TimeZoneInfo.CreateCustomTimeZone(response.TimeZoneId, offset, response.TimeZoneName, response.TimeZoneName); 
var localTime = TimeZoneInfo.ConvertTimeFromUtc(utcDate, timeZone); 

return localTime; 
} 
+0

Большое спасибо. Это именно то, что я искал! –