gsteel/google-timezone

Google Timezone API Client

1.8.0 2024-10-25 17:59 UTC

README

Build Status

codecov Psalm Type Coverage

Latest Stable Version Total Downloads

Introduction

Provides a well tested set of interfaces and value objects for interacting with Google's Timezone API

Installation

The only supported method of installation is via composer.

This client requires a PSR-18 Http Client and PSR-17 Factory implementations. These implementations are not required by composer, so you will need to ensure you have them installed, for example,

composer require php-http/curl-client laminas/laminas-diactoros gsteel/google-timezone

Usage

The TimeZone API requires an API key from Google

<?php

use DateTimeImmutable;
use GSteel\GoogleTimezone\Coordinates;
use GSteel\GoogleTimezone\HttpClient;
use Http\Client\Curl\Client;
use Laminas\Diactoros\RequestFactory;
use Laminas\Diactoros\UriFactory;

$apiKey = 'Some API Key';

$client = new HttpClient(
    $apiKey,
    new Client(),
    new UriFactory(),
    new RequestFactory()
);

$primeMeridian = '51.47,-0.00';
$referenceDate = DateTimeImmutable::createFromFormat('!Y-m-d', '2020-01-01');

$result = $this->client->fetch(
    Coordinates::fromString($primeMeridian),
    $referenceDate
);

assert($result->isSuccess());        // true
echo $result->timezone()->getName(); // "Europe/London"
$result->isReferenceDateDst();       // false
echo $result->name();                // "Greenwich Mean Time"

License

MIT Licensed.

Contributing

…is welcomed. Please make sure your patch passes CI :)