wyndow/teazee

一个简单的界面,用于确定地球上某个位置的时区和时间偏移数据。

0.3.0 2016-02-25 18:46 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:52:51 UTC


README

License Build Status Code Quality Code Coverage Package Version

一个简单的界面,用于查找地球上某个位置的时间区和时间偏移数据。

安装

推荐安装 Teazee 的方法是使用 Composer

$ composer require wyndow/teazee

使用

Teazee 接口,所有提供者都实现它,仅暴露一个方法

  • find($lat, $lng, $timestamp = null)

ZoneInfo

find() 方法返回一个 ZoneInfo 对象,它扩展了 PHP 的 DateTimeZone 并公开以下额外方法

  • getDateTime() 将返回一个表示指定 timestampDateTimeImmutable
  • getTimestamp() 将返回指定 timestamp 的 UNIX 时间戳(int)。通常,此值用于确定是否应用夏令时。并非所有提供者都需要时间戳。如果需要时间戳但未提供,则使用当前时间。
  • getUtcOffset() 将返回给定位置的 UTC 偏移(int)(以秒为单位)。
  • isDst() 将返回一个表示在指定 timestamp 时是否处于夏令时的 boolean 值。
  • getCountry() 将返回时区的两位数字国家代码。

注意:您可以将 ZoneInfo 用作代码中对 DateTimeZone 的直接替换。

提供者

提供者为您执行黑魔法:与 API 通信、获取结果、处理错误等。

Google Maps

获取密钥

Google Maps TimeZone API 允许您在不进行身份验证的情况下进行多次调用。

$teazee = new Teazee\Provider\GoogleMaps(null, $client, $messageFactory);

当您准备使用自己的 API 密钥时,将其作为第一个参数传递

$teazee = new Teazee\Provider\GoogleMaps($apiKey, $client, $messageFactory);

TimeZoneDB

获取密钥

使用 TimeZoneDB 提供者需要有效的 apiKey

$teazee = new Teazee\Provider\TimezoneDb($apiKey, $client, $messageFactory);

如果您拥有 TimezoneDb 的付费账户,将 true 作为第二个参数传递以使用 VIP 端点。

$iAmVIP = true;
$teazee = new Teazee\Provider\TimezoneDb($apiKey, $iAmVIP, $client, $messageFactory);

链提供者

链提供者是一个特殊的提供者,它接受一个提供者列表并遍历此列表以获取时区。请注意,它会在提供者返回结果时停止迭代。

$googleMaps = new Teazee\Provider\GoogleMaps($apiKey, $client, $messageFactory);
$timezoneDb = new Teazee\Provider\TimezoneDb($apiKey, $isPremium, $client, $messageFactory);
$teazee = new Teazee\Provider\Chain([$googleMaps, $timezoneDb]);
$zone = $teazee->find($lat, $lng);

HTTP 客户端

为了与时区 API 进行通信,您需要一个 HTTP 客户端。Teazee 依赖于 PSR-7 标准 并尝试让您不必过多担心其实施。

您需要包含一个提供 php-http/client-implementation 的包,但您选择的包由您决定。如果您希望让 Teazee 确定要使用哪些 HTTP 类,请继续阅读有关发现的部分。

高级:发现

为了使此包的依赖项数量保持可管理,默认情况下不包含 HTTP 发现。

如果您想使用发现,则需要引入 php-http/discovery

composer require php-http/discovery

发现基于 Puli,如果包含其 composer 插件,则效果最佳

composer require puli/composer-plugin

启用发现功能后,创建提供者时可以省略 $client$messageFactory 对象。

$provider = new Teazee\Provider\TimezoneDb($apiKey); // Client and MessageFactory will be created for you!

扩展功能

您可以通过实现 Provider 接口来编写自己的 provider

版本控制

Teazee 遵循 语义化版本控制

贡献

请参阅 CONTRIBUTING 文件。

单元测试

为了运行测试套件,请安装开发依赖项

$ composer install --dev

然后,运行以下命令

$ bin/kahlan

致谢

特别感谢 William Durand 和 Geocoder 项目,我们在其基础上构建了 Teazee 的应用程序结构和文档。

贡献者行为准则

作为本项目的贡献者和维护者,我们承诺尊重所有通过报告问题、发布功能请求、更新文档、提交拉取请求或补丁以及其他活动来贡献的人。

我们致力于让每个人,无论经验水平、性别、性别认同和表达、性取向、残疾、个人外观、体型、种族、年龄或宗教,都能在本项目中参与,并享有无骚扰的经历。

参与者不可接受的行为包括使用性语言或图像、贬低性评论或人身攻击、捣乱、公开或私下的骚扰、侮辱或其他不专业行为。

项目维护者有权也有责任移除、编辑或拒绝与该行为准则不符的评论、提交、代码、维基编辑、问题和其他贡献。不遵守行为准则的项目维护者可能被从项目团队中移除。

可以通过开启问题或联系一个或多个项目维护者来报告滥用、骚扰或其他不可接受的行为。

本行为准则改编自 贡献者公约,版本 1.0.0,可在 http://contributor-covenant.org/version/1/0/0/ 查找。

许可协议

Teazee 在 MIT 许可协议下发布。有关详细信息,请参阅捆绑的 LICENSE 文件。