1
當to_s
被調用時,你如何強制Ruby的Time
類使用ISO8601?強制Ruby時間等級使用ISO8601
當to_s
被調用時,你如何強制Ruby的Time
類使用ISO8601?強制Ruby時間等級使用ISO8601
正如@DumpHole提到的,你總是可以覆蓋Time.to_s像這樣:
require 'time'
class Time
def to_s
iso8601
end
end
但是,你可能不希望覆蓋to_s
對時間的所有實例。相反,你可以創建一個自定義包裝類,並使用它:
require 'time'
class Iso8601Time < Time
def to_s
iso8601
end
end
Iso8601Time.now.to_s #=> "2015-04-17T17:35:13-07:00"
不會'需要'時間'; Time.now.iso8601#=>「2015-04-17T17:35:13-07:00」'比重新定義[Time#to_s]更好(http://ruby-doc.org/core-2.2.0/爲time.html#方法-I-to_s)? –
這個'Time#to_s'在一個我無法控制的庫中調用。這個庫將在我傳遞給它的任何對象上調用'to_s'並將其保存到磁盤。我想要ISO8601在磁盤上。 – garbagecollector
僅供參考,我已經完成了這個:'上課時間; def to_s; ISO8601;結束; end'。這似乎工作,但我不知道是否建議重寫'Time#to_s' – garbagecollector