wyndow / teazee
一个简单的界面,用于确定地球上某个位置的时区和时间偏移数据。
Requires
- php: >=5.5
- igorw/get-in: ^1.0
- php-http/client-implementation: 1.0
- php-http/message: ^1.0.0
Requires (Dev)
- crysalead/kahlan: ^2.0.1
- php-http/guzzle6-adapter: ^1.0.0
- php-vcr/php-vcr: ^1.2.7
Suggests
- php-http/discovery: Allows Teazee to find an appropriate HTTP Client
This package is not auto-updated.
Last update: 2024-09-14 18:52:51 UTC
README
一个简单的界面,用于查找地球上某个位置的时间区和时间偏移数据。
安装
推荐安装 Teazee 的方法是使用 Composer
$ composer require wyndow/teazee
使用
Teazee
接口,所有提供者都实现它,仅暴露一个方法
find($lat, $lng, $timestamp = null)
ZoneInfo
find()
方法返回一个 ZoneInfo
对象,它扩展了 PHP 的 DateTimeZone
并公开以下额外方法
getDateTime()
将返回一个表示指定timestamp
的DateTimeImmutable
。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
致谢
- Michael Crumm mike@crumm.net
- 所有贡献者
特别感谢 William Durand 和 Geocoder 项目,我们在其基础上构建了 Teazee 的应用程序结构和文档。
贡献者行为准则
作为本项目的贡献者和维护者,我们承诺尊重所有通过报告问题、发布功能请求、更新文档、提交拉取请求或补丁以及其他活动来贡献的人。
我们致力于让每个人,无论经验水平、性别、性别认同和表达、性取向、残疾、个人外观、体型、种族、年龄或宗教,都能在本项目中参与,并享有无骚扰的经历。
参与者不可接受的行为包括使用性语言或图像、贬低性评论或人身攻击、捣乱、公开或私下的骚扰、侮辱或其他不专业行为。
项目维护者有权也有责任移除、编辑或拒绝与该行为准则不符的评论、提交、代码、维基编辑、问题和其他贡献。不遵守行为准则的项目维护者可能被从项目团队中移除。
可以通过开启问题或联系一个或多个项目维护者来报告滥用、骚扰或其他不可接受的行为。
本行为准则改编自 贡献者公约,版本 1.0.0,可在 http://contributor-covenant.org/version/1/0/0/ 查找。
许可协议
Teazee 在 MIT 许可协议下发布。有关详细信息,请参阅捆绑的 LICENSE 文件。