根据坐标获取当地时间

克里斯蒂安(Cristian Tabuyo)。

我正在编写一个应用程序,该应用程序应根据您提供的坐标(经纬度)给出本地时间。

我只知道两种方法可以做到这一点:

1st:获取TimeZone名称,然后找到其本地时间。第二:使用Google API接收时间作为偏移量,并且UTC不在本地。

我决定使用第一种方法,因为它似乎更容易,所以我决定使用GeoTimeZone来获取时区...问题是那我不知道如何获取该TimeZone上的当地时间...这是我为获取TimeZone名称而编写的代码。

string tz = TimeZoneLookup.GetTimeZone(lat, lon).Result;

变量latlon当然是坐标。

谢谢!

编辑:我的问题是如何获取该TimeZone上的LocalTime?

卓安哲

您可以使用Google api识别当前时区。
.Net小提琴示例

public class Program
{
    public static DateTime GetLocalDateTime(double latitude, double longitude, DateTime utcDate)
    {
        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", utcDate.ToTimestamp());
        request.AddParameter("sensor", "false");
        var response = client.Execute<GoogleTimeZone>(request);

        return utcDate.AddSeconds(response.Data.rawOffset + response.Data.dstOffset);
    }

    public static void Main()
    {
        var myDateTime = GetLocalDateTime(33.8323, -117.8803, DateTime.UtcNow);
        Console.WriteLine(myDateTime.ToString());
    }
}

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 ExtensionMethods 
{
    public static double ToTimestamp(this DateTime date)
    {
        DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
        TimeSpan diff = date.ToUniversalTime() - origin;
        return Math.Floor(diff.TotalSeconds);
    }
}

然后,您可以轻松使用GetLocalDateTime(double latitude, double longitude, DateTime utcDate)上面示例中显示的方法:

public static void Main()
{
    var myDateTime = GetLocalDateTime(33.8323, -117.8803, DateTime.UtcNow);
    Console.WriteLine(myDateTime.ToString());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

StrToTime没有根据当地时间

来自分类Dev

如何获取其他时区的当地时间

来自分类Dev

对应UTC当地时间

来自分类Dev

当地时间表示

来自分类Dev

UTC和当地时间

来自分类Dev

将时间转换为当地时间

来自分类Dev

角度:显示都柏林当地时间

来自分类Dev

PostgreSQL UTC到英国当地时间

来自分类Dev

Windows vs Linux当地时间?

来自分类Dev

从格林尼治标准时间获取当地时间的抵消时间-Laravel Carbon

来自分类Dev

获取Android中的格林尼治标准时间和当地时间之间的时差?

来自分类Dev

将GMT时间转换为当地时间

来自分类Dev

在PostgreSQL 8.3中以当地时间转换UTC时间

来自分类Dev

将UTC时间转换为当地时间

来自分类Dev

使用熊猫将时区时间覆盖到当地时间

来自分类Dev

将WRF UTC时间转换为当地时间

来自分类Dev

如何在当地时间显示UTC时间

来自分类Dev

在PostgreSQL 8.3中以当地时间转换UTC时间

来自分类Dev

如何将UTC时间转换为当地时间

来自分类Dev

将UTC时间转换为当地时间

来自分类Dev

无法将UTC时间转换为当地时间?

来自分类Dev

如何将当地时间转换为UTC?

来自分类Dev

使用angularjs将UTC转换为当地时间

来自分类Dev

将当地时间的矢量转换为UTC

来自分类Dev

在当地时间显示wp_next_scheduled

来自分类Dev

怎么把当地时间转换成utc?

来自分类Dev

将当地时间转换为UTC,反之亦然

来自分类Dev

将UTC转换为国家当地时间

来自分类Dev

如何在当地时间应用strftime