Module: TimeHelper
- Defined in:
- lib/helper/time_helper.rb
Instance Method Summary collapse
- #get_days(date_begin, date_end, week_days) ⇒ Object
- #scan_date(str) ⇒ Object
- #scan_time(str) ⇒ Object
- #scan_week_day(str) ⇒ Object
- #time_parse(str) ⇒ Object
Instance Method Details
#get_days(date_begin, date_end, week_days) ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/helper/time_helper.rb', line 106 def get_days(date_begin, date_end, week_days) if week_days.sort == [0,1,2,3,4,5,6] days = [] elsif date_begin == date_end days = [date_begin.to_s] else days = (date_begin..date_end).select do |e| week_days.include?(e.wday) end days.collect{|d| d.to_s} end end |
#scan_date(str) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/helper/time_helper.rb', line 119 def scan_date str arr = str.scan(/(\d+年)?(\d+)月(\d+)日/) arr.first[0] = arr.first[0].nil? ? Date.today.year.to_s : arr.first[0].chop date_begin = arr.first.join('-').to_date if arr.size > 1 arr.last[0] = arr.last[0].nil? ? Date.today.year.to_s : arr.last[0].chop date_end = arr.last.join('-').to_date else date_end = date_begin end date_end = date_end.next_year if date_end < date_begin {date_begin: date_begin, date_end: date_end} end |
#scan_time(str) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/helper/time_helper.rb', line 29 def scan_time str arr = str.scan(/(\d+:\d+)/).flatten if arr.size > 0 time_begin = arr.first.to_time if arr.size > 1 time_end = arr.last.to_time end arr12 = str.scan(/晚上/) if arr12.size > 0 if time_begin.hour <= 12 time_begin += 12.hour time_end += 12.hour if str.scan(/凌晨/).blank? && time_end.hour <= 12 end end end time_begin ||= '00:00'.to_time time_end ||= '00:00'.to_time { time_begin: time_begin.strftime("%H:%M"), time_end: time_end.strftime("%H:%M"), time_begin_seconds: time_begin.seconds_since_midnight, time_end_seconds: time_end.seconds_since_midnight} end |
#scan_week_day(str) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/helper/time_helper.rb', line 52 def scan_week_day str week_day_hash = { "一" => 1, "二" => 2, "三" => 3, "四" => 4, "五" => 5, "六" => 6, "日" => 0, } # "03月15日 ~ 06月07日 每周六、日 10:00-11:30" # "04月01日 ~ 06月01日 每周二、三、五、日 08:00-20:30" arr = str.scan(/周(.)|、([一|二|三|四|五|六|日]){1,6}/) week_days = [] if arr.size > 0 week_days = arr.collect do |d| week_day_hash.values_at((d - [nil]).first).first end end # 03月31日 ~ 06月17日 每周二至周日 14:00-16:30 arr = str.scan(/周(.)至周(.)/).flatten if arr.size > 0 days = arr.map{|key| week_day_hash[key]} week_days = (days.first..(days-[0]).last).to_a week_days << 0 if days.include?(0) #if days.last == 0 # days[-1] = 6 # week_days = (days.first..days.last).to_a # week_days << 0 #else # week_days = (days.first..days.last).to_a #end end # 开始时间:1月9日 11:00(周四)结束时间:4月9日 00:00(周三) arr = str.scan(/\d+:\d+\(周[一|二|三|四|五|六|日]\)/) if arr.size == 2 week_days = [1,2,3,4,5,6,0] end # 03月15日 ~ 06月01日 每天08:30-09:00 arr = str.scan(/每天/) if arr.size > 0 week_days = [1,2,3,4,5,6,0] end # 2014年4月12日 星期六 15:00 - 18:00 arr = str.scan(/星期([一|二|三|四|五|六|日])/).flatten if arr.size > 0 week_days = arr.map{|key| week_day_hash[key]} end date_hash = scan_date(str) days = get_days(date_hash[:date_begin], date_hash[:date_end], week_days) date_hash.merge({days: days, day_weekly: week_days}) end |
#time_parse(str) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/helper/time_helper.rb', line 4 def time_parse(str) date_hash = {} # 2014年1月11日 - 2014年4月20日 # 2014年4月12日 星期六 15:00 - 18:00 # 12月31日 ~ 2015年01月01日 每天20:00-22:00 # 03月15日 ~ 06月07日 每周六、日 10:00-11:30 # 04月01日 ~ 06月01日 每周二、三、五、日 08:00-20:30 # 03月16日 ~ 06月08日 每周日 09:00-11:00 # 07月26日 周六 19:30-22:30 # 03月31日 ~ 06月17日 每周二至周日 14:00-16:30 # 开始时间:1月9日 11:00(周四)结束时间:4月9日 00:00(周三) # 03月15日 ~ 06月01日 每天08:30-09:00 # 03月19日 周三 19:30-21:00||||06月15日 周日 19:30-21:30 位置不要乱动|||| # # 07月04日 周五 20:00-23:30 # 07月05日 周六 20:00-23:30 # 07月13日 周日 20:00-23:30 # # 7月08日 星期二 , 晚上 09:00 - 7月09日 星期三 , 凌晨 04:00 TODO date_hash.merge!(scan_time(str)) date_hash.merge!(scan_week_day(str)) end |