code: public static CqlDuration from(@NonNull String input) {
      boolean isNegative = input.startsWith("-");
      String source = isNegative ? input.substring(1) : input;
  
      if (source.startsWith("P")) {
        if (source.endsWith("W")) {
          return parseIso8601WeekFormat(isNegative, source);
        }
        if (source.contains("-")) {
          return parseIso8601AlternativeFormat(isNegative, source);
        }
        return parseIso8601Format(isNegative, source);
      }
      return parseStandardFormat(isNegative, source);
    }
docs: Converts a <code>String</code> into a duration.
  
  <p>The accepted formats are:
  
  <ul>
  <li>multiple digits followed by a time unit like: 12h30m where the time unit can be:
  <ul>
  <li>{@code y}: years
  <li>{@code m}: months
  <li>{@code w}: weeks
  <li>{@code d}: days
  <li>{@code h}: hours
  <li>{@code m}: minutes
  <li>{@code s}: seconds
  <li>{@code ms}: milliseconds
  <li>{@code us} or {@code µs}: microseconds
  <li>{@code ns}: nanoseconds
  </ul>
  <li>ISO 8601 format: P[n]Y[n]M[n]DT[n]H[n]M[n]S or P[n]W
  <li>ISO 8601 alternative format: P[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]
  </ul>
  
  @param input the <code>String</code> to convert