Time.zone.today는 Time 클래스에 말을 걸었는데 왜 Date 클래스가 반환되는가?

4025 단어 루비Rails

어리석은 일



이런 Rails 코드가 있습니다.
Time.zone.today

Time에 today는 이름의 메소드를 사용할 수 있기 때문에 뭔가 위화감을 느끼고 있어요.
흥미 본위로, 이 인스턴스에 「당신의 클래스는?」라고 물어보니, Date 클래스의 인스턴스가 돌아와서 참을 수 있었습니다.



나는 Time 클래스 씨에게 말을 걸었을 것인데. . 왜 뭐야! ?
어느새 Date 클래스 씨로 바뀌고 있는 것이다! ?

순서를 따라 정리하고 싶습니다.

환경



루비 3.0.0
Rails 6.0.3

1, Time#zone이란?



Time#zone은 TimeZone 클래스의 인스턴스를 생성하는 것 같습니다.

zone()
Returns the TimeZone for the current request, if this has been set (via Time.zone=).If Time.zone has not been set for the current request, returns the TimeZone specified in config.time_zone.
htps : // 아피. 루병라이 LS. 오 rg / c ぁせ s / 치메. html # 메모 d-c

발췌한 문서에 의하면, Rails라고 여기를 보러 갈 것 같다↓.

config/application.rb
module AppName
  class Application < Rails::Application
    # 中略
    config.time_zone = 'Tokyo'

확실히 「아무래도, 나는 TimeZone 클래스가?」라고 대답이 돌아왔다.
[2] pry(main)> y = Time.zone
=> #<ActiveSupport::TimeZone:0x00007ff4a889c548 @name="Tokyo", @tzinfo=#<TZInfo::DataTimezone: Asia/Tokyo>, @utc_offset=nil>
[3] pry(main)> y.class
=> ActiveSupport::TimeZone

이제 생성되는 TimeZone 클래스
htps : // 아피. 루병라이 LS. 오 rg / c ぁせ s / 아 c ゔ ぇ 쏘 rt / 치메 조네. HTML

2, TimeZone#today란?



TimeZone 클래스는 인스턴스 메소드today를 가지고 있다.
소스 코드를 들여다 보면 ... ↓
htps : // 기주 b. 코 m/라이 ls/라이 ls/bぉb/83217025 아 부디. rb # L491

발췌↓

time_zone.rb
    # Returns the current date in this time zone.
    def today
      tzinfo.now.to_date
    end
to_date 네!
Time.zone.today의 반환값을 최종적으로 Date 클래스로 하고 있던 것은 너였는가!
납득.

그건 그렇고, to_date 메소드는 ↓
htps : // / cs. 루 by ぁん g. 오 rg / 그럼 / ㅁ st / 어쩌면 d / 굳이 / 있어 / 그리고 _다테. HTML

마지막으로



조금이지만, 왠지 수수함에 이런 것이 재미있다.

이것을 쓰고, 「어라, 라고 할까 오늘의 정보를 갖고 싶다면, 심플하게 Date.today 하지만 괜찮잖아...」라는 의문이 솟아 왔습니다.
@ j 치토 님의 기사에서 나중에 정리하자 ....
htps : // 코 m/j 치치// ms/카에 89 네 43c30f5d6 푹 2c # 치메% 3% 82%

그리고 사실이 기사는 지금 초안 중 더 emo 기사의 부산물 기사입니다.

추가: 썼습니다! ↓

좋은 웹페이지 즐겨찾기