目次
- あらかじめユーザー設定で登録したものをデータベースから取得する
- フォームで選択させて送信する
- JavaScriptで取得して送信する
あらかじめユーザー設定で登録したものをデータベースから取得する
ユーザー設定にタイムゾーンの設定を設け、ユーザーに紐付けて保存します。
Carbon::parse($request->date, $user->timezone)
PHPの場合は以下の関数で取得します。
timezone_identifiers_list(\DateTimeZone::ALL)
セレクトボックスを用意すると良いでしょう。
@foreach (timezone_identifiers_list(\DateTimeZone::ALL) as $timezone)
<option value="{{ $timezone }}">{{ $timezone }}</option>
@endforeach
フォームで選択させて送信する
日時を送信するフォームにタイムゾーンの入力項目を設け、送信したものを使います。
Carbon::parse($request->date, $request->timezone)
ユーザー設定と同様にセレクトボックスを用意すると良いでしょう。
JavaScriptで取得して送信する
モダンブラウザではタイムゾーンを取得できるようになっています。hiddenに埋め込むなり、axiosやfetchに渡すなりして送信しましょう。
Intl.DateTimeFormat().resolvedOptions().timeZone
IEには対応していません。