spatie / google-time-zone
获取坐标对应时区
1.2.6
2024-02-27 15:41 UTC
Requires
- php: ^7.2|^8.0
- ext-json: *
- guzzlehttp/guzzle: ^6.5|^7.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^4.0|^5.0|^6.0|^7.0|^8.0|^9.0
- phpunit/phpunit: ^8.0|^9.0|^10.5
README
此包可以使用Google时区服务将GPS坐标转换为时区。以下是一个快速示例:
GoogleTimeZone::getTimeZoneForCoordinates('51.2194475', '4.4024643'); // Will return this array [ "dstOffset" => 0 "rawOffset" => 3600 "timeZoneId" => "Europe/Brussels" "timeZoneName" => "Central European Standard Time" ]
支持我们
我们投入了大量资源来创建一流的开放式软件包。您可以通过购买我们的付费产品之一来支持我们。
我们非常感谢您从您的家乡给我们寄明信片,注明您正在使用我们哪个包。您可以在我们的联系页面上找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上。
安装
您可以通过Composer安装此包。
composer require spatie/google-time-zone
Laravel安装
尽管该包在非Laravel项目中也能正常工作,但我们为我们的工匠伙伴提供了一些便利。
在Laravel中,会自动注册包本身,但您仍需自己发布配置文件。
php artisan vendor:publish --provider="Spatie\GoogleTimeZone\GoogleTimeZoneServiceProvider" --tag="config"
这是配置文件的内容
return [ /* * The api key used when sending timezone requests to Google. */ 'key' => env('GOOGLE_MAPS_TIMEZONE_API_KEY', ''), /* * The language param used to set response translations for textual data. * * More info: https://developers.google.com/maps/faq#languagesupport */ 'language' => '', ];
用法
以下是获取一组坐标对应时区的方法。
$googleTimeZone = new GoogleTimeZone(); $googleTimeZone->setApiKey(config('google-time-zone.key')); $googleTimeZone->getTimeZoneForCoordinates('51.2194475', '4.4024643'); /* // Will return this array [ "dstOffset" => 0 "rawOffset" => 3600 "timeZoneId" => "Europe/Brussels" "timeZoneName" => "Central European Standard Time" ] */
您可以以特定语言返回结果。
$googleTimeZone ->setLanguage('nl') ->getTimeZoneForCoordinates('51.2194475', '4.4024643'); /* // Will return this array [ "dstOffset" => 0 "rawOffset" => 3600 "timeZoneId" => "Europe/Brussels" "timeZoneName" => "Midden-Europese standaardtijd" ] */
可以指定位置的日期和时间戳,以便考虑夏令时。默认情况下,我们将此时间戳设置为当前时间。
$googleTimeZone ->setTimestamp(new DateTime('13 august 2018')) ->getTimeZoneForCoordinates('51.2194475', '4.4024643'); /* // Will return this array [ "dstOffset" => 3600 "rawOffset" => 3600 "timeZoneId" => "Europe/Brussels" "timeZoneName" => "Central European Summer Time" ] */
如果您使用Laravel使用此包,可以直接调用getTimeZoneForCoordinates
。
GoogleTimeZone::getTimeZoneForCoordinates('51.2194475', '4.4024643'); /* // Will return this array [ "dstOffset" => 0 "rawOffset" => 3600 "timeZoneId" => "Europe/Brussels" "timeZoneName" => "Central European Standard Time" ] */
如果没有找到时区,将返回null
。
明信片软件
您可以使用此包,但如果它进入了您的生产环境,我们非常希望您从您的家乡给我们寄明信片,注明您正在使用我们的哪个包。
我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。
我们将所有收到的明信片发布在我们的公司网站上。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。