2014-05-23 4 views
1

테이블이 entity이고 테이블이 users 인 데이터베이스가 있습니다. 엔티티 테이블에는 created_atupdated_at에 대한 필드가 있습니다. 사용자 표에는 timezone 필드가 있으며 기본값은 America/Toronto입니다. 내보기에서Laravel 4에서 출력 된 날짜의 시간대는 어떻게 바꿀 수 있습니까?

, I 출력 할 수 다음 코드로 내가 원하는 형식으로 날짜 :

이제
$entity->created_at->format('M j, Y \\a\\t g:i A') 

, 내가 어떻게 출력 사용자 테이블의 시간대 필드를 사용하여 날짜? (탄소의 인스턴스에 위의 날짜 열을 변환합니다 내가 Laravel에 설득력을 사용하고 있기 때문에) 나는 Carbon이 할 수있는 간단한 방법을 찾고 있어요 뭔가 같은 ...

$entity->created_at->format('M j, Y \\a\\t g:i A', Auth::user()->timezone); 

.

참고 : 날짜를 표시 할 때 시간대 만 변경하면됩니다. 모든 날짜가 데이터베이스의 기본 UTC 시간대에 저장되기를 원합니다.

또한 Carbon과 함께 사용할 수있는 올바른 표준 시간대 목록을 찾을 수 있습니까? 사용자가 기본 시간대를 변경할 수 있도록 데이터베이스에 저장하고 싶습니다.

답변

4

탄소 기능 copy()을 사용하면 개체에 시간대를 변경하지 않아도됩니다. 그런 다음 원하는 시간대로 시간대를 설정하고 결과를 '출력'할 수 있습니다.

$entity->created_at->copy()->tz(Auth::user()->timezone)->format('M j, Y \\a\\t g:i A'); 

시간대는 - it is just PHP timezones입니다.

$tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL); 
+0

완벽합니다. 이것이 내가 필요한 것입니다. – chipit24

+0

안녕하세요, laravel 5.1을 사용하고 있으며 솔루션을 사용해 보았지만 작동하지 않습니다. 그것은 여전히 ​​원래의 datetime :(. –