Module: UaEnv::UaDates
- Defined in:
- lib/uaenv/uadates/uadates.rb
Constant Summary collapse
- UA_MONTHNAMES =
[nil] + %w{ січень лютий березень квітень травень червень липень серпень вересень жовтень листопад грудень }
- UA_DAYNAMES =
%w(неділя понеділок вівторок середа червер п'ятниця субота)
- UA_ABBR_MONTHNAMES =
[nil] + %w{ січ лют бер кві тра чер лип сер вер жов лис гру }
- UA_ABBR_DAYNAMES =
%w(нд пн вт ср чт пт сб)
- UA_INFLECTED_MONTHNAMES =
[nil] + %w{ січня лютого березня квітня травня червня липня серпня вересня жовтня листопада грудня }
- UA_DAYNAMES_E =
[nil] + %w{перше друге третє четверте п'яте шосте сьоме восьме дев'яте десяте одинадцяте дванадцяте тринадцяте чотирнадцяте п'ятнадцяте шістнадцяте сімнадцяте вісімнадцяте дев'ятнадцяте двадцяте двадцять тридцяте тридцять}
- @@ignored =
www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-i-strftime Literal string:
%% - Literal ``%'' character
unicode.org/reports/tr20/tr20-1.html U+FFFC Object replacement character офіційно застосовується для позначення вкладеного об‘єкту
[0xEF, 0xBF, 0xBC].pack("U*").freeze
Class Method Summary collapse
- .distance_of_time_in_words(from_time, to_time = 0, include_seconds = false, options = {}) ⇒ Object
- .ua_strftime(format = '%d.%m.%Y', time = '') ⇒ Object
Class Method Details
.distance_of_time_in_words(from_time, to_time = 0, include_seconds = false, options = {}) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/uaenv/uadates/uadates.rb', line 36 def self.distance_of_time_in_words(from_time, to_time = 0, include_seconds = false, = {}) from_time = from_time.to_time if from_time.respond_to?(:to_time) to_time = to_time.to_time if to_time.respond_to?(:to_time) distance_in_minutes = (((to_time - from_time).abs)/60).round distance_in_seconds = ((to_time - from_time).abs).round case distance_in_minutes when 0..1 return (distance_in_minutes == 0) ? 'менше хвилини' : '1 хвилину' unless include_seconds case distance_in_seconds when 0..5 then 'менше 5 секунд' when 6..10 then 'менше 10 секунд' when 11..20 then 'менше 20 секунд' when 21..40 then 'півхвилини' when 41..59 then 'менше хвилини' else '1 хвилину' end when 2..45 then distance_in_minutes.to_s + " " + distance_in_minutes.items("хвилина", "хвилини", "хвилин") when 46..90 then 'близько години' when 90..1440 then "близько " + (distance_in_minutes.to_f / 60.0).round.to_s + " " + (distance_in_minutes.to_f / 60.0).round.items("години", 'годин', 'годин') when 1441..2880 then '1 день' else (distance_in_minutes / 1440).round.to_s + " " + (distance_in_minutes / 1440).round.items("день", "дні", "днів") end end |
.ua_strftime(format = '%d.%m.%Y', time = '') ⇒ Object
25 26 27 28 29 30 31 32 33 |
# File 'lib/uaenv/uadates/uadates.rb', line 25 def self.ua_strftime(format='%d.%m.%Y', time='') clean_fmt = format.to_s.gsub(/%%/, @@ignored). gsub(/%a/, UA_ABBR_DAYNAMES[time.wday]). gsub(/%A/, UA_DAYNAMES[time.wday]). gsub(/%b/, UA_ABBR_MONTHNAMES[time.mon]). gsub(/%d(\s)*%B/, time.day.to_s + '\1' + UA_INFLECTED_MONTHNAMES[time.mon]). gsub(/%B/, UA_MONTHNAMES[time.mon]). gsub(@@ignored, '%%') end |