[Rails] 時間相關函式(Time)
keywords: time
, date
, datetime
Ruby
Time.now # => 2017-10-04 20:48:52 +0800
Time.now.strftime('%Y/%m/%d') # => "2017/10/04"
Time.now.strftime('%Y/%m/%d %T') # => "2017/12/19 11:27:11"
Time.now.strftime('%Y/%m/%d %R') # => "2017/12/19 11:28"
Time.now.strftime('%Y/%m/%d %I:%M %p') # => "2017/12/19 11:27 AM"
Time.now.strftime('%F') # => "2018-01-12"
Time.now.strftime('%F %R') # => "2018-01-15 17:18"
Time.now.strftime("%B %e, %Y at %I:%M %p") # => "March 23, 2013 at 09:48 AM"
Rails
# 根據使用者機器的時區,忽略你設定的時區(不建議)
Time.now
Time.now + 5.days # => 2017-10-09 20:47:07 +0800
Time.now.beginning_of_day # => 2017-10-04 00:00:00 +0800
# 根據在 config/application.rb 中所設定的時區(建議)
Time.zone.now # 使用設定的 Timezone
Time.current # 等同於 Time.zone.now
1.day.from_now # 從現在往後推算一天
1.day.ago # 從現在往前推算一天
Time.current.utc.iso8601 # 將時間轉成 utc iso8601 傳送給 app
Time.zone.parse(time_string) # 解析時間,並轉成伺服器時區
Time.zone.strptime(time_string, '%Y-%m-%dT%H:%M:%S%z') # 解析時間,並轉成伺服器時區
設定時區
# config/application.rb
config.time_zone = 'Taipei'
取得時區
$ rake time:zones:all # 會列出所有時區
比較時間
e.start_at > Time.now # false / true
查詢時間
Post.where(['posts.published_at > ?', Time.current])