public void setInto ( ReadWritableInterval writableInterval , Object object , Chronology chrono ) { String str = ( String ) object ; int separator = str . indexOf ( ' ' ) ; if ( separator < 0 ) { throw new IllegalArgumentException ( "Format requires a '/' separator: " + str ) ; } String leftStr = str . substring ( 0 , separator ) ; if ( leftStr . length ( ) <= 0 ) { throw new IllegalArgumentException ( "Format invalid: " + str ) ; } String rightStr = str . substring ( separator + 1 ) ; if ( rightStr . length ( ) <= 0 ) { throw new IllegalArgumentException ( "Format invalid: " + str ) ; } DateTimeFormatter dateTimeParser = ISODateTimeFormat . dateTimeParser ( ) ; dateTimeParser = dateTimeParser . withChronology ( chrono ) ; PeriodFormatter periodParser = ISOPeriodFormat . standard ( ) ; long startInstant = 0 , endInstant = 0 ; Period period = null ; Chronology parsedChrono = null ; // before slash char c = leftStr . charAt ( 0 ) ; if ( c == ' ' || c == ' ' ) { period = periodParser . withParseType ( getPeriodType ( leftStr ) ) . parsePeriod ( leftStr ) ; } else { DateTime start = dateTimeParser . parseDateTime ( leftStr ) ; startInstant = start . getMillis ( ) ; parsedChrono = start . getChronology ( ) ; } // after slash c = rightStr . charAt ( 0 ) ; if ( c == ' ' || c == ' ' ) { if ( period != null ) { throw new IllegalArgumentException ( "Interval composed of two durations: " + str ) ; } period = periodParser . withParseType ( getPeriodType ( rightStr ) ) . parsePeriod ( rightStr ) ; chrono = ( chrono != null ? chrono : parsedChrono ) ; endInstant = chrono . add ( period , startInstant , 1 ) ; } else { DateTime end = dateTimeParser . parseDateTime ( rightStr ) ; endInstant = end . getMillis ( ) ; parsedChrono = ( parsedChrono != null ? parsedChrono : end . getChronology ( ) ) ; chrono = ( chrono != null ? chrono : parsedChrono ) ; if ( period != null ) { startInstant = chrono . add ( period , endInstant , - 1 ) ; } } writableInterval . setInterval ( startInstant , endInstant ) ; writableInterval . setChronology ( chrono ) ; }
Sets the value of the mutable interval from the string .