code: private String getLocalTimeAsString(BigDecimal localTimeParam) {
          if (localTimeParam == null) {
              return "99:99";
          }
  
          BigDecimal localTime = localTimeParam;
          if (localTime.compareTo(BigDecimal.ZERO) == -1) {
              localTime = localTime.add(BigDecimal.valueOf(24.0D));
          }
          String[] timeComponents = localTime.toPlainString().split("\\.");
          int hour = Integer.parseInt(timeComponents[0]);
  
          BigDecimal minutes = new BigDecimal("0." + timeComponents[1]);
          minutes = minutes.multiply(BigDecimal.valueOf(60)).setScale(0, RoundingMode.HALF_EVEN);
          if (minutes.intValue() == 60) {
              minutes = BigDecimal.ZERO;
              hour += 1;
          }
          if (hour == 24) {
              hour = 0;
          }
  
          String minuteString = minutes.intValue() < 10 ? "0" + minutes.toPlainString() : minutes.toPlainString();
          String hourString = (hour < 10) ? "0" + String.valueOf(hour) : String.valueOf(hour);
          return hourString + ":" + minuteString;
      }
docs: Returns the local rise/set time in the form HH:MM.
  
  @param localTime
  <code>BigDecimal</code> representation of the local rise/set time.
  @return <code>String</code> representation of the local rise/set time in HH:MM format.