[RUBY-ON-RAILS] 사용자의 시간대의 시간을 표시하는 방법
RUBY-ON-RAILS사용자의 시간대의 시간을 표시하는 방법
나는 레일 3.0.5를 사용하고 난 created_at과 UTC에 저장 updated_at 있습니다. 지금은 사용자의 시간대에 created_at 시간을 표시합니다. 나는 브라우저에서 사용자의 시간대를 선택하고 사용자의 시간대로 시간을 변환 할 수 믿습니다.
나는 확실히 레일이 같은 돌봐 플러그인 / 보석을 것입니다. 거기 뭐 있니?
해결법
-
==============================
1.기본적으로 레일은 데이터베이스에 값을 저장하기 전에 UTC에 모든 날짜를 변환합니다. 에 관계없이 서버 시간대, 당신은 항상 당신의 데이터베이스에 UTC 날짜가,이 수단.
기본적으로 레일은 데이터베이스에 값을 저장하기 전에 UTC에 모든 날짜를 변환합니다. 에 관계없이 서버 시간대, 당신은 항상 당신의 데이터베이스에 UTC 날짜가,이 수단.
사용자의 시간대로 날짜를 변환하기 위해 당신은 기본적으로 두 가지 가능성이있다 :
귀하의 사이트가 등록을 허용하는 경우, 당신은 사용자 환경 설정 등 사용자의 시간대를 저장할 수 있습니다. 사용자 테이블에서 사용자의 시간대를 저장합니다. 그런 다음 in_time_zone 방법을 사용하여 적절한 시간대에 어떤 날짜 / 시간 형식을 사용할 수있는 도우미 사용자 정의를 작성합니다.
> t = Time.current # => Mon, 23 Dec 2013 18:25:55 UTC +00:00 > t.zone # => "UTC" > t.in_time_zone("CET") # => Mon, 23 Dec 2013 19:25:55 CET +01:00
외모가 같은 수 있습니다 귀하의 도우미
def format_time(time, timezone) time.in_time_zone(timezone) end
일반적으로도 출력 표준 형식의 I18n.l 도우미를 사용하는 등의 I
def format_time(time, timezone) I18n.l time.to_time.in_time_zone(timezone), format: :long end
귀하의 사이트가 더 등록이 없거나 당신이 그들의 시간대에 대한 사용자 요청하지 않거나 단순히 사용자 시스템의 시간대를 사용하려면, 당신은 자바 스크립트를 사용할 수 있습니다.
나의 제안은 당신이 값을 변환하는 일반적인 자바 스크립트 함수를 만들 수 있도록 적절한 방법으로 모든 시간을 인쇄하는 사용자 지정 도우미를 만드는 것입니다.
def format_time(time, timezone) time = time.to_time content_tag(:span, I18n.l(time, format: :long), data: { timezone: timezone, time: time.iso8601 }) end
이제 DOM로드에 수행되는 자바 스크립트 함수를 생성하고 데이터와 시각 속성을 가진 모든 HTML 태그를 선택합니다. 이를 반복하고 업데이트를 지정된 시간대에 적절한 시간 스팬 태그 안에 값.
간단한의의 jQuery를 예로들 수
$(function() { $("span[data-time]").each(function() { // get the value from data-time and format according to data-timezone // write the content back into the span tag }); });
간단한 검색을 사용할 자바 스크립트 시간 포맷터이 많이 있기 때문에 나는 여기에 전체 코드를 게시하고 있지 않다. 여기에 몇 가지 가능한 해결 방법입니다
-
==============================
2.https://github.com/basecamp/local_time -베이스 캠프가 클라이언트 측 렌더링을위한 LOCAL_TIME라고하여 좋은 보석이있다. 그것은 사용자가 로그인되지 않은 애플리케이션을위한 좋은 그리고 그것은 친화적 인 캐시입니다.
https://github.com/basecamp/local_time -베이스 캠프가 클라이언트 측 렌더링을위한 LOCAL_TIME라고하여 좋은 보석이있다. 그것은 사용자가 로그인되지 않은 애플리케이션을위한 좋은 그리고 그것은 친화적 인 캐시입니다.
-
==============================
3.당신은 사용자의 시간대에 모든 시간을 변환하는 응용 프로그램 컨트롤러에이를 추가 할 수 있습니다 :
당신은 사용자의 시간대에 모든 시간을 변환하는 응용 프로그램 컨트롤러에이를 추가 할 수 있습니다 :
class ApplicationController < ActionController::Base around_filter :user_time_zone, :if => :current_user def user_time_zone(&block) Time.use_zone(current_user.timezone_name, &block) end end
당신은 사용자의 시간대를 캡처 할 수있는 단지
-
==============================
4.UTC에 저장 (같은 기본입니다) 즉, started_at하고 있습니다 : 당신이 표시 할 값이 데이터베이스에서오고 있다고 가정.
UTC에 저장 (같은 기본입니다) 즉, started_at하고 있습니다 : 당신이 표시 할 값이 데이터베이스에서오고 있다고 가정.
당신이 사용자의 시간대이 경우 당신은 또한 수행하여 시간을 지역화 할 수 오프셋으로 :
started_at.in_time_zone(-2) => Mon, 24 Feb 2014 23:07:56 GST -02:00
다음 원하는 부분을 얻을 수있는 방법은 모든 종류의 munged 할 수있는 :
started_at.in_time_zone(-2).yesterday => Sun, 23 Feb 2014 23:07:56 GST -02:00 started_at.in_time_zone(-2) + 3.days => Thu, 27 Feb 2014 23:07:56 GST -02:00
-
==============================
5.http://api.rubyonrails.org/classes/Time.html#method-c-use_zone
http://api.rubyonrails.org/classes/Time.html#method-c-use_zone
이것은 당신이 찾고있는 것입니다 :
Time.use_zone(@user.timezone) do blah blah blah end
-
==============================
6.특정 시간대에 날짜를 변환하려는 경우 :
특정 시간대에 날짜를 변환하려는 경우 :
deadline.in_time_zone(time_zone)
00, 당신은 단순히 시간대에 시간을 찾기 위해 유니버설 시간 가치에 추가 또는 범용 시간을 얻을 수 있습니다 : 05 - 카라치에서와 같이 또한, 로컬 시스템 시간대 플러스 현지 시간 및 그 구절을 통해 유니버설 시간을 찾을 수 있습니다 현지 시간부터 (우리의 경우 05:00) 시간대 차이의 뺄셈하여 현지 시간에서
-
==============================
7.당신은 벤이 게시 한뿐만 아니라 이러한 링크를 살펴 할 수 있습니다 :
당신은 벤이 게시 한뿐만 아니라 이러한 링크를 살펴 할 수 있습니다 :
from https://stackoverflow.com/questions/5267170/how-to-display-the-time-in-users-timezone by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 미디어 파일 스트림 또는 SEND_DATA send_file 방법을 통해 바이트 범위 요청을 수락 레일 (0) | 2020.02.20 |
---|---|
[RUBY-ON-RAILS] 레일에 루비 - 모델에서 액세스 컨트롤러 변수 (0) | 2020.02.20 |
[RUBY-ON-RAILS] 부트 스트랩 날짜 선택기를 사용하는 동안 어떻게 선택한 날짜 값을 얻으려면? (0) | 2020.02.19 |
[RUBY-ON-RAILS] 만들기는 외부 URL에 경로를 레일 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 브라우저 감지 방법 레일 (0) | 2020.02.19 |