2017-05-04 15 views

답변

1

the source code에서 볼 수 있듯이 R::isoDateTime()은 단지 편리한 방법입니다. 단순히 PHP time() 함수를 호출 한 다음 date 함수를 사용하여 결과를 문자열로 서식 지정합니다.

나는 그것을 테스트하지 않았지만 이론적으로는 date_default_timezone_set 함수가 작동해야합니다. 예 :

date_default_timezone_set('America/Los_Angeles'); 
+0

예. date_default_timezone_set을 사용했습니다. – GRowing

0

Matt이 지적한대로 R::isoDateTime()은 편의 기능입니다.

@date('Y-m-d H:i:s', $time)` 

즉 : 어떤 시간대 정보없이 타임 스탬프 : 제가 확인했습니다 RedBean의 모든 버전 (3.x를, 4.x의)에서

, 그것은으로 정의된다. 예 : 2017-09-05 18:49:16. MySQL의에서


:

당신은 아마 어떤 시간대 정보없이 datetime를 사용하고 R::isoDateTime()은 잘 할 것입니다. 포스트 그레스를 사용하는 경우


그러나 것은주의 :

포스트 그레스 포스트 그레스 '시간대에 배 시간대없이 같은 시간, 이해 그래서 당신은 RedBean를 사용하여 시간을 설정하더라도 (안 PHP의!) , 날짜가 예상 한 것과 다르다는 것을 알 수 있습니다.

이 도움이 될 것입니다 SHOW timezone; :

  • 이 포스트 그레스의 기본 시간대를 확인하려면.
  • Postgres의 기본 시간대를 변경하려면 역할 (사용자) : ALTER ROLE myuser SET timezone = 'Europe/Paris';.
  • 안전을 위해 원하는대로 Postgres의 기본 시간대를 설정하는 것이 좋습니다. 그러나 시간을 가지고 작업 할 때마다 명시 적으로 시간대를 표시하는 것이 좋습니다. 이렇게하면 특정 시간대에있을 때 실수로 UTC로 해석되는 시간을 피할 수 있습니다. 따라서 시간대가없는 R::isoDateTime() 대신 @date('c') (예 : 2017-09-05T18 : 49 : 16 + 02 : 00)과 같은 것을 사용할 수 있습니다.

그리고 마지막으로 마음 포스트 그레스 유지는 UTC로 모든 것을 저장,하지만/그것의 현재 설정 timezone 설정에 따라 시간대의 다양한 년 timestamp without a time zone 유형 (AKA timestamptz)를 표시 할 수 있습니다. 예 :: 2017-09-05T18 : 유럽/파리가 설정된 경우 49 : 16 + 02 : 00, UTC가 설정된 경우 2017-09-05T16 : 49 : 16 + 00 : 00 (둘 다 같은 시간을 나타냄)

(나는 RedBean을 좋아하지만이 부분은 어디에서든지 보지 못했을 것입니다.) 잘만하면이 도움이 될 것입니다.