app/helpers/account/dates_helper.rb in bullet_train-1.3.0 vs app/helpers/account/dates_helper.rb in bullet_train-1.3.1
- old
+ new
@@ -1,18 +1,55 @@
module Account::DatesHelper
- def display_date(timestamp, format: :default, date_format: nil)
+ def display_date(timestamp, custom_date_format = nil, format: :default, date_format: nil)
+ return nil unless timestamp
format = date_format if date_format
- localize(local_time(timestamp).to_date, format: format) if timestamp
+
+ if format && format == :default
+ # e.g. October 11, 2018
+ if custom_date_format
+ local_time(timestamp).strftime(custom_date_format)
+ elsif local_time(timestamp).year == local_time(Time.now).year
+ local_time(timestamp).strftime("%B %-d")
+ else
+ local_time(timestamp).strftime("%B %-d, %Y")
+ end
+ else
+ localize(local_time(timestamp).to_date, format: format)
+ end
end
- def display_time(timestamp, format: :default, time_format: nil)
+ def display_time(timestamp, custom_time_format = nil, format: :default, time_format: nil)
+ return nil unless timestamp
format = time_format if time_format
- localize(local_time(timestamp).to_time, format: format) if timestamp
+
+ if format && format == :default
+ # e.g. 4:22 PM
+ local_time(timestamp).strftime(custom_time_format || "%l:%M %p")
+ else
+ localize(local_time(timestamp).to_time, format: format)
+ end
end
- def display_date_and_time(timestamp, format: :default, date_format: nil, time_format: nil)
+ def display_date_and_time(timestamp, custom_date_format = nil, custom_time_format = nil, format: :default, date_format: nil, time_format: nil)
+ return nil unless timestamp
format = "#{date_format} #{time_format}" if date_format && time_format
- localize(local_time(timestamp).to_datetime, format: format) if timestamp
+
+ if format && format == :default
+ # e.g. Today at 4:22 PM
+ # e.g. Yesterday at 2:12 PM
+ # e.g. April 24 at 7:39 AM
+ # today?
+ if local_time(timestamp).to_date == local_time(Time.now).to_date
+ "Today at #{display_time(timestamp, custom_time_format)}"
+ # yesterday?
+ elsif (local_time(timestamp).to_date) == (local_time(Time.now).to_date - 1.day)
+ "Yesterday at #{display_time(timestamp, custom_time_format)}"
+ else
+ "#{display_date(timestamp, custom_date_format)} at #{display_time(timestamp, custom_time_format)}"
+ end
+ else
+ localize(local_time(timestamp).to_datetime, format: format)
+ end
end
def local_time(timestamp)
timestamp&.in_time_zone(current_user.time_zone)
end