minube/geo-timezone

此包的最新版本(1.0.3)没有可用的许可证信息。

PHP库,用于根据特定位置和日期计算时区。

1.0.3 2017-09-28 10:24 UTC

This package is not auto-updated.

Last update: 2024-09-18 14:07:58 UTC


README

Build Status Code Coverage Scrutinizer Code Quality Build Status

基于node-geo-tz包,此PHP库根据坐标(纬度、经度)和时间戳参考计算特定位置的时区。因此,此库也提供了任何时刻特定位置的本地日期。此外,它基于由timezone-boundary-builder工具提取的时区边界,因此必须始终使用此包的最新版本。为了通过边界改进时区搜索,node-geo-tz建议创建一个基于迭代地将地球划分为象限和子象限的目录树。此树在参考库中称为"data.zip"。

需求

运行库需要GEOS PHP扩展。因此,您应该下载并编译它,运行脚本bin/compile-geos .sh;然后,将在/usr/lib/php中添加名为"geos.so"的库。如您所见,此脚本包含安装一些在安装过程的下一步中将需要的PHP扩展。

一旦编译了GEOS PHP扩展,您应该创建geos.ini文件,以启用模块并相应地提高性能。

最后,您应该运行composer文件,以安装其余必要的库。

用法

有两个主要类

  • UpdaterData:脚本,用于下载时区边界数据最新版本并创建目录树(data.zip)。这可能需要几个小时,因此您可以使用node-geo-tz的"data.zip"进行首次测试。否则,您可以运行UpdaterData脚本以获取最新版本并创建目录树。目标文件夹必须有写权限
    use GeoTimeZone\UpdaterData;

    $updater = new UpdaterData("/path/to/data/");
    $updater->updateData();
  • Calculator:提供与特定纬度、经度和时间戳关联的时区名称或本地日期。
    use GeoTimeZone\Calculator;

    $latitude = 39.452800;
    $longitude = -0.347038;
    $timestamp = 1469387760;

    $calculator = new Calculator("/path/to/data/");

    // Local date
    $localDate = $calculator->getLocalDate($latitude, $longitude, $timestamp);
    /* DateTime Object
    (
        [date] => 2016-07-24 21:16:00.000000
        [timezone_type] => 3
        [timezone] => Europe/Madrid
    )
    */

    // TimeZone name
    $timeZoneName = $calculator->getTimeZoneName($latitude, $longitude);
    //Europe/Madrid