시간 사용하여 asTime()정확하지 않은

0

질문

에서 내 눈금 보기 나는 이를 변경하는 열간 및 날짜를 사용 시간대

[
    'format' => [
       'class' => 'yii\i18n\Formatter',
       'timeZone' => 'Asia/Singapore',
    ],
    'attribute' => 'created_at',
    'label' => 'Date',
    'filter' => false,
    'value'=> function($model, $key, $index, $column){ return Search::getDateTime($model); }, }
    'format' => 'raw',
]

그런 다음에서 내 모델 검색이

public static function getDateTime($model) {

        $date = Yii::$app->formatter->asDate($model->created_at);
        $time = Yii::$app->formatter->asTime($model->created_at);

        return Html::a($date, null, ['href' => 'javascript:void(0);', 'class' => 'btn btn-link p-0 rounded-0 tooltips', 'data-toggle' => 'tooltip', 'data-placement'=> 'bottom', 'title' => $time]);
    }

나도 이 내에서 main.php 구성 요소

'formatter' => [
            'class' => 'yii\i18n\Formatter',
            'dateFormat' => 'php:j M Y',
            'datetimeFormat' => 'php:d/m/Y h:i a',
            'timeFormat' => 'php:H:i A',
            'defaultTimeZone' => 'Asia/Singapore'
        ],

에서 내 데이터베이스 created_at 저장 다음과 같이 2021-11-22 11:28:16 UTC

어떻게 그것을 얻을 보여 올바른 시간 내에 기반 timezone? (아시아/싱가폴)

amazon-rds php yii2
2021-11-22 19:53:38
1

최고의 응답

0

귀하의 저장 datetimes 은 날짜와 시간이지만 참조하 UTC 영역입니다. 그래서,그것은 불가능하여 자동하는 아시아/싱가포르 날짜/시간입니다. 대신,당신이 알고 있는 그들은 UTC 및 아시아/싱가포르 UTC+8 추가 할 수 있습니다,8 시간의 datetimes.

그래서,추가 코드:

  • 을 만들이 날짜 객체에서 created_at 필드의 값입니다.
  • 추가 8 시간 동안합니다.
  • 새로운 created_at 값으로 8 시간이 추가됩니다.
  • 고 가서 너의 원래 코드입니다.

당신은 여기:

public static function getDateTime($model)
{
    $datetime = new DateTime($model->created_at, new DateTimeZone('UTC'));
    $datetime->add(new DateInterval('PT8H'));
    $created_at = $datetime->format('Y-m-d H:i:s');

    $date = Yii::$app->formatter->asDate($created_at);
    $time = Yii::$app->formatter->asTime($created_at);

    return Html::a($date, null, ['href' => 'javascript:void(0);', 'class' => 'btn btn-link p-0 rounded-0 tooltips', 'data-toggle' => 'tooltip', 'data-placement'=> 'bottom', 'title' => $time]);
}

고 여기 또는(아마도 더 나은)방법을 변환 datetime UTC 에서 특정 시간이 지역: UTC 날짜/시간이 문자열을 표준 시간대

2021-11-24 13:16:29

이 있습 방법으로 설정이 전 세계적으로? 나 내가 모든 사용 asDate()asTime() ? 기 때문에 모든 내 datetimes 에 저장된 데이터베이 날짜와 시간입니다.
Shaho

내가 사용 시간을 설정하는 지대한 나의 전체를 사용하는 웹 응용 프로그램 date_default_timezone_set(). 이 방법은,나의 시스템은 시간대에서 내가 원하는 datetimes 에 저장된 DB 에 따라하는 표준 시간대,그래서 나는 그들을 사용할 수 있습니다 그들은 저장된다.
José Carlos PHP

Europe/London 은 나쁜 생각이 아니다. 영국을 사용하여 일광 절약 시간 시스템의 시간대를 사용하는 것 UTC 날짜를 위해서는 겨울만 UTC+1 한 날짜에 여름입니다. 당신이 사용해야 한다 new DateTimeZone('UTC') 대신하는 경우 당신의 시간은 항상 저장됩니다.
Michal Hynčica

@MichalHynčica 당신이 바로,나는 나를 편집하 답변 감사합니다!
José Carlos PHP

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................