public static void Main(string[] args)
var myDateTime = GetLocalDateTime(29.204918, 1.845703, DateTime.Now);
Console.WriteLine(myDateTime.ToString());
myDateTime = GetLocalDateTime(34.020084, -118.182678, DateTime.Now);
Console.WriteLine(myDateTime.ToString());
public static DateTime GetLocalDateTime(double latitude, double longitude, DateTime date)
var client = new RestClient("https://maps.googleapis.com");
var request = new RestRequest("maps/api/timezone/json", Method.GET);
request.AddParameter("location", latitude + "," + longitude);
request.AddParameter("timestamp", date.ToTimestamp());
request.AddParameter("sensor", "false");
var response = client.Execute<GoogleTimeZone>(request);
return date.AddSeconds(response.Data.rawOffset + response.Data.dstOffset);
public class GoogleTimeZone
public double dstOffset { get; set; }
public double rawOffset { get; set; }
public string status { get; set; }
public string timeZoneId { get; set; }
public string timeZoneName { get; set; }
public static class DateTimeExtensionMethods
public static double ToTimestamp(this DateTime date)
return date.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds;