Giter VIP home page Giter VIP logo

geo-timezone's Introduction

Geo-Timezone PHP Library

Build Status Code Coverage Scrutinizer Code Quality Build Status

Based on the node-geo-tz package, this PHP library calculates the timezone associated to a particular location based on coordinates (latitude, longitude) and timestamp reference. Therefore, this library provides the local date of a particular location in any moment too. In addition, it is based on the timezones boundaries extracted by timezone-boundary-builder tool, so it is necessary to always use the latest version of this package. In order to improve the timezone search through the boundaries, node-geo-tz proposes to create a tree of directories based on dividing the Earth in quadrants and sub-quadrants iteratively. This tree is called "data.zip" in the reference library.

Requirements

GEOS PHP extension is needed to run library. So, you should download and compile it running the script bin/compile-geos .sh; then, the library called "geos.so" will be added to /usr/lib/php. As you can see, this script contains the installation of some php extensions that will be necessary in the next step of the installation process.

Once you have compiled the GEOS PHP extension, you should create the file geos.ini in order to enable the module and improve the performance consequently.

Finally, you should run the composer file, so the rest of necessary libraries will be installed.

Usage

There are two main classes:

  • UpdaterData: script that downloads the last version of the timezone boundaries data and creates the tree of directories (data.zip). It takes a few hours, so you can use "data.zip" from node-geo-tz to test for the first time. Otherwise, you can run the UpdaterData script in order to get the last version and create the directories tree. Destination folder must have write permisions
    use GeoTimeZone\UpdaterData;

    $updater = new UpdaterData("/path/to/data/");
    $updater->updateData();
  • Calculator: provides the timezone name or the local date associated to a particular latitude, longitude and timestamp.
    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

geo-timezone's People

Contributors

abmo avatar fjalvarezdd avatar lyrixx avatar justharris avatar inakivb avatar poetrasapoetra avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.