我正在嘗試在 Laravel 中實作多個時區。我已經有 JS 收集用戶時區并成功存盤在用戶表的“時區”列中。
我有一個視圖刀片,用戶可以在其中選擇發送活動的日期和時間。我正在努力傳遞要在視圖中顯示的用戶時區(“h:i A”,)。目前顯示來自 config/app.php 的時區,在我的例子中是“歐洲/阿姆斯特丹”。
這是帶有引導程式日期選擇器和時間的視圖部分。
<div class="form-group">
<div class="col-md-5">
<label for="" class="form-label">Start Sending:</label>
<br>
<input type="radio" name="send_at" @if(old('send_at') != "now") checked @endif value="now" id="send-now">
<label for="send-now">Now</label><br>
<input type="radio" @if($mailing && strtotime($mailing->send_at) > time()) checked @endif name="send_at" value="latter" id="send-latter">
<label for="send-latter">Later</label><br>
<?php
$ts = time();
if($mailing && !old('send_date')) {
$ts = strtotime($mailing->send_at);
} elseif(old('send_date')) {
$ts = strtotime(old('send_date') .' '. old('send_time'));
}
?>
<div class="row">
<div class="col-md-6 pb-20">
<input class="datepicker form-control" type="text" name="send_date" value="{{ date("m/d/Y", $ts) }}">
</div>
<div hljs-number">6">
<div hljs-string">">
<input type="text" name="send_time" value="{{ date("h:i A", $ts) }}" id="timepicker" hljs-string">">
<span hljs-string">"><i hljs-string">"></i></span>
<span hljs-string">">CET</span>
</div>
</div>
</div>
</div>
</div>
我試圖在我的模型中添加這種屬性,但我不確定應該在此處添加哪些引數才能在視圖中正確顯示時間:
public function getCreatedAtAttribute($value)
{
$timezone = optional(auth()->user())->timezone ?? config('app.timezone');
return Carbon::parse($value)->timezone($timezone);
}
謝謝你的幫助!
uj5u.com熱心網友回復:
我相信最簡單的解決方案是將以下內容添加到boot方法中AppServiceProvider.php
public function boot()
{
date_default_timezone_set('Africa/Lagos');
}
如果這不起作用,您可以嘗試用time()laravel 的輔助方法替換-now(UTC)并提供時區作為引數。
此外,更改strtotime如下:
Carbon::createFromFormat('Y-m-d H:i:s', $mailing->send_at, 'UTC')
->setTimezone('Africa/Lagos')
uj5u.com熱心網友回復:
您可以通過以下方式更改日期時間格式
碳檔案
return Carbon::parse($value)->format('g:i A')->timezone($timezone);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/326308.html
上一篇:如何從字串訪問陣列位置
