spatie/google-time-zone

获取坐标对应时区

1.2.6 2024-02-27 15:41 UTC

This package is auto-updated.

Last update: 2024-08-27 16:40:02 UTC


README

Latest Version MIT Licensed run-tests Check & fix styling Total Downloads

此包可以使用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)。有关更多信息,请参阅许可证文件