code: public Trigger parse() {
          DateTime fromDate = parseDate(FROM_PATTERN, "00:00:00");
          DateTime toDate = parseDate(TO_PATTERN, "23:59:59");
          if (fromDate != null && toDate != null && fromDate.isAfterNow()) {
              throw new WestCacheException("scheduler expression is not valid " +
                      "because of from-date is after of to-date");
          }
  
          val scheduleBuilder = createScheduleBuilder();
          val triggerBuilder = newTrigger().withSchedule(scheduleBuilder);
          if (fromDate != null && fromDate.isAfterNow()) {
              triggerBuilder.startAt(fromDate.toDate());
          }
          if (toDate != null && toDate.isAfterNow()) {
              triggerBuilder.endAt(toDate.toDate());
          }
  
          return triggerBuilder.build();
      }
docs: Parse scheduled expression like followings:
  Every 1 minute 每1分钟
  Every 30 minutes 每30分钟
  Every 10 hours 每10小时
  Every 60 seconds 每60秒
  At 03:00 每天凌晨3点
  At ??:40 每小时的第40分钟
  0 20 * * * ? 每小时开始20分钟
  Every 30 minutes from 2016-10-10 to 2017-10-12
  At 03:00 to 2013-11-01
  0 20 * * * ? from 2013-10-10 14:00:00
  
  @return Scheduled parsed result.