복붙노트

[RUBY-ON-RAILS] 어떻게 레일의 상대 시간을합니까?

RUBY-ON-RAILS

어떻게 레일의 상대 시간을합니까?

나는 레일 응용 프로그램을 쓰고 있어요,하지만 특정 시간 클래스가 주어진다면, 즉 상대 시간을 수행하는 방법을 찾을 수없는 것, 그것은 "1 일 전"30 "초 전"계산하거나 할 수 있거나 한 달 이상이라면 "2008년 9월 1일"등

해결법

  1. ==============================

    1.당신 같은 소리는 ActiveSupport에서의 time_ago_in_words 방법 (또는 distance_of_time_in_words)를 찾고 있습니다. 이처럼 전화 :

    당신 같은 소리는 ActiveSupport에서의 time_ago_in_words 방법 (또는 distance_of_time_in_words)를 찾고 있습니다. 이처럼 전화 :

    <%= time_ago_in_words(timestamp) %>
    
  2. ==============================

    2.나는이 작성하지만, 기존의 방법은 더 나은 있는지 언급 확인해야했습니다.

    나는이 작성하지만, 기존의 방법은 더 나은 있는지 언급 확인해야했습니다.

    module PrettyDate
      def to_pretty
        a = (Time.now-self).to_i
    
        case a
          when 0 then 'just now'
          when 1 then 'a second ago'
          when 2..59 then a.to_s+' seconds ago' 
          when 60..119 then 'a minute ago' #120 = 2 minutes
          when 120..3540 then (a/60).to_i.to_s+' minutes ago'
          when 3541..7100 then 'an hour ago' # 3600 = 1 hour
          when 7101..82800 then ((a+99)/3600).to_i.to_s+' hours ago' 
          when 82801..172000 then 'a day ago' # 86400 = 1 day
          when 172001..518400 then ((a+800)/(60*60*24)).to_i.to_s+' days ago'
          when 518400..1036800 then 'a week ago'
          else ((a+180000)/(60*60*24*7)).to_i.to_s+' weeks ago'
        end
      end
    end
    
    Time.send :include, PrettyDate
    
  3. ==============================

    3.그냥 time_ago_in_words을 사용하는 앤드류 마샬의 솔루션을 명확히 (3.0 레일 및 레일 용 4.0)

    그냥 time_ago_in_words을 사용하는 앤드류 마샬의 솔루션을 명확히 (3.0 레일 및 레일 용 4.0)

    당신이보기에있는 경우

    <%= time_ago_in_words(Date.today - 1) %>
    

    당신은 컨트롤러에있는 경우

    include ActionView::Helpers::DateHelper
    def index
      @sexy_date = time_ago_in_words(Date.today - 1)
    end
    

    컨트롤러는 모듈 ActionView이없는 :: 도우미 :: DateHelper은 기본적으로 수입했다.

    N.B. 그것은 당신의 컨트롤러에 오기 도우미에 "레일 방식"아닙니다. 도우미는 견해를 도와입니다. time_ago_in_words 방법은 MVC 화음 도면 엔티티로 결정되었다. (때 로마에서 나는 ... 동의하지 않지만)

  4. ==============================

    4.는 어때

    는 어때

    30.seconds.ago
    2.days.ago
    

    또는 뭔가 다른 당신을 위해 촬영되었다?

  5. ==============================

    5.당신은 상대 시간을 수행 할 산술 연산자를 사용할 수 있습니다.

    당신은 상대 시간을 수행 할 산술 연산자를 사용할 수 있습니다.

    Time.now - 2.days 
    

    당신이 2 일 전에 제공 할 것입니다.

  6. ==============================

    6.이런 식으로 뭔가가 작동합니다.

    이런 식으로 뭔가가 작동합니다.

    def relative_time(start_time)
      diff_seconds = Time.now - start_time
      case diff_seconds
        when 0 .. 59
          puts "#{diff_seconds} seconds ago"
        when 60 .. (3600-1)
          puts "#{diff_seconds/60} minutes ago"
        when 3600 .. (3600*24-1)
          puts "#{diff_seconds/3600} hours ago"
        when (3600*24) .. (3600*24*30) 
          puts "#{diff_seconds/(3600*24)} days ago"
        else
          puts start_time.strftime("%m/%d/%Y")
      end
    end
    
  7. ==============================

    7.때문에 여기에 대부분의 대답은 time_ago_in_words을 제안합니다.

    때문에 여기에 대부분의 대답은 time_ago_in_words을 제안합니다.

    사용하는 대신 :

    <%= time_ago_in_words(comment.created_at) %>
    

    레일에서 선호 :

    <abbr class="timeago" title="<%= comment.created_at.getutc.iso8601 %>">
      <%= comment.created_at.to_s %>
    </abbr>
    

    코드를 사용하여 jQuery 라이브러리 http://timeago.yarp.com/, 함께 :

    $("abbr.timeago").timeago();
    

    주요 장점 : 캐싱

    http://rails-bestpractices.com/posts/2012/02/10/not-use-time_ago_in_words/

  8. ==============================

    8.여기에 인스턴스 메소드를 살펴 보자 :

    여기에 인스턴스 메소드를 살펴 보자 :

    http://apidock.com/rails/Time

    이것은 어제, 내일, beginning_of_week, 전 등 유용한 방법이있다

    예를 들면 :

    Time.now.yesterday
    Time.now.ago(2.days).end_of_day
    Time.now.next_month.beginning_of_month
    
  9. ==============================

    9.나는 레일 액티브 오브젝트에 대해이 작업을 수행 보석을 작성했습니다. 예제 용도는 created_at하지만 클래스 ActiveSupport :: TimeWithZone와 updated_at 또는 아무것도에 대한 작업도 않습니다.

    나는 레일 액티브 오브젝트에 대해이 작업을 수행 보석을 작성했습니다. 예제 용도는 created_at하지만 클래스 ActiveSupport :: TimeWithZone와 updated_at 또는 아무것도에 대한 작업도 않습니다.

    그냥 보석 설치하고 TimeWithZone 인스턴스에서 '꽤'메서드를 호출합니다.

    https://github.com/brettshollenberger/hublot

  10. ==============================

    10.당신은 레일 응용 프로그램을 작성하는 경우 사용한다

    당신은 레일 응용 프로그램을 작성하는 경우 사용한다

    Time.zone.now
    Time.zone.today
    Time.zone.yesterday
    

    이것은 당신이 레일 응용 프로그램을 구성한있는 시간대의 시간이나 날짜를 제공합니다.

    당신이 UTC를 사용하도록 응용 프로그램을 구성하는 경우 예를 들어, Time.zone.now 항상 (이 예를 들어 영국 여름의 변화에 ​​영향을받지 않습니다) UTC 시간에있을 것입니다.

    상대 시간을 계산하는 것은 쉬운 예를 들어,

    Time.zone.now - 10.minute
    Time.zone.today.days_ago(5)
    
  11. ==============================

    11.또 다른 방법은 백엔드에서 약간의 논리를 언로드하고 브라우저가 자바 스크립트를 사용하여 작업을 할 수 있도록하는 것입니다 같은 플러그인 :

    또 다른 방법은 백엔드에서 약간의 논리를 언로드하고 브라우저가 자바 스크립트를 사용하여 작업을 할 수 있도록하는 것입니다 같은 플러그인 :

    jQuery를 시간 전에 또는 그 레일 보석 적응

  12. from https://stackoverflow.com/questions/195740/how-do-you-do-relative-time-in-rails by cc-by-sa and MIT license