首頁  >  文章  >  後端開發  >  Lumen timezone 時區設定方法

Lumen timezone 時區設定方法

jacklove
jacklove原創
2018-06-29 17:45:381784瀏覽

今天用Lumen 框架寫程式碼時, 也是初次體驗Lumen, 遇到了一個問題, 從資料庫裡查出的時間比資料庫裡保存的TIMESTAMP 時間慢了8個小時, 很明顯這是一個時區設定的問題, 本以為可以在1分鐘內解決的, 但是我錯了

根據Laravel 4.x 和5.0 的經驗, 只需要到config/app.php 中設置下'timezone' 參數為'PRC'就好了, 找到Lumen 的config 目錄, 在/vendor/laravel/lumen-framework/config 路徑下, 但是config/app.php 的參數選項中沒有timezone 參數選項, 手動加上後也是無效的。

然後想到 Laravel 5 的 .env 檔案, 結果發現 Lumen 的 .env 檔案裡也沒有關於 timezone 設定的選項。

又回到config 目錄, 看看config/database.php 中的設定, 關於mysql 的預設設定如下:

'mysql' => [
 'driver'  => 'mysql',
 'host'   => env('DB_HOST', 'localhost'),
 'port'   => env('DB_PORT', 3306),
 'database' => env('DB_DATABASE', 'forge'),
 'username' => env('DB_USERNAME', 'forge'),
 'password' => env('DB_PASSWORD', ''),
 'charset'  => 'utf8',
 'collation' => 'utf8_unicode_ci',
 'prefix'  => env('DB_PREFIX', ''),
 'timezone' => env('DB_TIMEZONE','+00:00'),
 'strict'  => false,
],

##在這裡有資料庫的timezone 設定, 預設00:00, 也就是UTC 時間, 改成08:00 問題解決。由於專案啟用了 .env 設定檔, 所以最終是在 .env 檔案裡新增了一行

DB_TIMEZONE= 08:00## 資料庫 timezone 問題解決。

資料庫的timezone 問題雖然解決了, 但是app 的timezone 問題還沒解決, 全域搜尋lumen 專案, 找用到timezone 的地方, 在

/vendor/laravel/lumen-framework/src/ Application.php

檔案中找到了初始化lumen timezone 部分的程式碼

/**
* Create a new Lumen application instance.
*
* @param string|null $basePath
* @return void
*/
public function __construct($basePath = null)
{
 date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));
 $this->basePath = $basePath;
 $this->bootstrapContainer();
 $this->registerErrorHandling();
}

程式碼中使用的.env 參數為APP_TIMEZONE, 值為UTC, 在這裡將UTC 改為PRC, 或在.env 檔案中加入

APP_TIMEZONE=PRC

lumen php 的時區設定問題解決。

Lumen 時區設定總結

編輯.env 檔案新增設定

APP_TIMEZONE=PRC
DB_TIMEZONE=+08:00

若沒啟用.env 設定檔, 編輯

/vendor/laravel/lumen-framework/config/database.php
/vendor/laravel/lumen-framework/src/Application.php

#分別修改APP_TIMEZONE 和DB_TIMEZONE 參數值。

啟用.env 設定檔

將Lumen 根目錄下的.env.example 檔案重新命名為.env, 編輯/bootstrap/app.php, 取消如下行程式碼的註解

Dotenv::load(__DIR__.'/../');


#補充:

因為lumen預設使用格林尼治時間,需要轉成北京時間。

在.env中加入


APP_TIMEZONE=PRC

DB_TIMEZONE= 08:00


這樣時間就正確了

相關推薦:

php nginx 即時輸出的簡單實作方法的講解


#PHP註解語法規格與命名規格詳解



#################################### ##php語言註釋,單行註解和多行註解的相關內容######################

以上是Lumen timezone 時區設定方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn