我想要得到的當前時間的字符串在Ruby中:Fixnum對象字符串轉換
"Time is " + Time.new.month + "/" + Time.new.day + "/" + Time.new.year
但它說:「不能轉換爲長整數字符串」。我怎樣才能解決這個問題?
我想要得到的當前時間的字符串在Ruby中:Fixnum對象字符串轉換
"Time is " + Time.new.month + "/" + Time.new.day + "/" + Time.new.year
但它說:「不能轉換爲長整數字符串」。我怎樣才能解決這個問題?
或者您可以使用正確的工具進行作業:時間格式化。
Time.new.strftime "Time is %m/%d/%Y" # => "Time is 11/13/2012"
你可以使用to_s
"Time is " + Time.new.month.to_s + "/" + Time.new.day.to_s + "/" + Time.new.year.to_s
但事件更是用strftime
Time.new.strftime("Time is %-m/%e/%Y")
紅寶石只能加串來串,所以需要轉換。作爲一個說明,在雙引號字符串插值的元素都將自動轉換:
now = Time.new
"Time is #{now.month}/#{now.day}/#{now.year}"
它也可以將它們從一個陣列,他們也自動轉換結合起來:
now = Time.new
"Time is " + [ now.month, now.day, now.year ].join('/')
您還可以使用sprintf
樣式插值:
now = Time.new
"Time is %d/%d/%d" % [ now.month, now.day, now.year ]
第二個讓您更好地控制格式。例如%02d
將用0
填充到兩個地方。
正如塞爾吉奧指出的那樣,這種格式有一個特殊用途的功能,這可能是一個更好的主意。另外Time.now
是現在的的傳統方法,而Time.new
用於創建任意時間。
只要有可能,優先選擇字符串插值而不是連接。正如您可以清楚看到的那樣(thread),使用字符串插值將自動爲您調用to_s
。
使用字符串插值:
「時間是#{} Time.new.month /#{} Time.new.day /#{} Time.new.year」
題外話,但調用爲了得到一個字符串,'Time.new'三次是每月最後一天的每個午夜的一個潛在錯誤。 – steenslag