Open1

アプリケーションにおけるタイムゾーンの扱い

ta.toshiota.toshio
  1. システム時間を設定

    1-1. date_default_timezone_get()を利用、もたは.envやConfig/timezone.phpなどでベースのタイムゾーンを決定しておく
    1-2. 利用したいタイムゾーンを設定する。DBのシステムテーブルに保存してはどうか

  2. DBには1で設定したタイムゾーンの値で保存する

  3. 2で保存した値を1-2で保存した利用したいタイムゾーンに変換する。
    以下サンプル

$value = "2021-03-15 16:30:00";
$defaultTimeZone = date_default_timezone_get();
$timeZone = "Europe/London";
$dateTime = convertTimeZone($value, $defaultTimeZone, $timeZone);

function convertTimeZone($time, $sourceTimeZoneName, $targetTimeZoneName)
{
	$sourceTimeZone = new DateTimeZone($sourceTimeZoneName);
        $targetTimeZone = new DateTimeZone($targetTimeZoneName);

	$myDateTime = new DateTime($time, $sourceTimeZone);	
	$myDateTime->setTimeZone($targetTimeZone);
	return $myDateTime;
}

参考: https://github.com/YetiForceCompany/YetiForceCRM/blob/developer/include/fields/DateTimeField.php#L239-L256