2016-01-28 2 views
0

J'ai besoin de savoir comment obtenir l'heure locale à un moment précis à n'importe quel endroit sur la globle.Comment obtenir l'heure locale à un moment donné partout dans le monde

Quelque chose comme ceci:

DateTime localTime = GetLocalTime(utcDateTime, city); 

ou

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

Y at-il une API dans le Fx NET ou Windows API ou un service Web mondial pour obtenir l'heure locale à un moment précis à une emplacement sur le globle?

+1

Obtenez un fuseau horaire: [? Comment obtenir un fuseau horaire à partir d'un emplacement en utilisant les coordonnées de latitude et de longitude] (http://stackoverflow.com/questions/16086962/how-to-get-a-time -zone-from-a-location-using-latitude-et-longitude-coordonnees) puis obtenir un temps. –

Répondre

1

Vous pouvez utiliser Google API SDK pour obtenir l'emplacement. 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

Merci beaucoup. C'est exactement ce que je cherchais! –