Time.zone.today는 Time 클래스에 말을 걸었는데 왜 Date 클래스가 반환되는가?
어리석은 일
이런 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.rbmodule 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 기사의 부산물 기사입니다.
추가: 썼습니다! ↓
Reference
이 문제에 관하여(Time.zone.today는 Time 클래스에 말을 걸었는데 왜 Date 클래스가 반환되는가?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kakudaisuke/items/8b01d1328f203bcfcdd3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Time.zone.today
module AppName
class Application < Rails::Application
# 中略
config.time_zone = 'Tokyo'
[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
# Returns the current date in this time zone.
def today
tzinfo.now.to_date
end
조금이지만, 왠지 수수함에 이런 것이 재미있다.
이것을 쓰고, 「어라, 라고 할까 오늘의 정보를 갖고 싶다면, 심플하게
Date.today
하지만 괜찮잖아...」라는 의문이 솟아 왔습니다.@ j 치토 님의 기사에서 나중에 정리하자 ....
htps : // 코 m/j 치치// ms/카에 89 네 43c30f5d6 푹 2c # 치메% 3% 82%
그리고 사실이 기사는 지금 초안 중 더 emo 기사의 부산물 기사입니다.
추가: 썼습니다! ↓
Reference
이 문제에 관하여(Time.zone.today는 Time 클래스에 말을 걸었는데 왜 Date 클래스가 반환되는가?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kakudaisuke/items/8b01d1328f203bcfcdd3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)