@@ -993,7 +993,14 @@ export function GetTemporalRelativeToOption(options) {
993993 } else if ( ! offset ) {
994994 offsetBehaviour = 'wall' ;
995995 }
996+ // Allow imprecise offset matching unless the provided offset is precise
996997 matchMinutes = true ;
998+ if ( offset ) {
999+ const offsetParseResult = Call ( RegExpPrototypeExec , OFFSET_WITH_PARTS , [ offset ] ) ;
1000+ assert ( offsetParseResult , 'offset string must re-parse' ) ;
1001+ const offsetSecondsPart = offsetParseResult [ 4 ] ;
1002+ if ( offsetSecondsPart ) matchMinutes = false ;
1003+ }
9971004 } else if ( z ) {
9981005 throw new RangeErrorCtor (
9991006 'Z designator not supported for PlainDate relativeTo; either remove the Z or add a bracketed time zone'
@@ -1521,7 +1528,14 @@ export function ToTemporalZonedDateTime(item, options = undefined) {
15211528 }
15221529 if ( ! calendar ) calendar = 'iso8601' ;
15231530 calendar = CanonicalizeCalendar ( calendar ) ;
1524- matchMinute = true ; // ISO strings may specify offset with less precision
1531+ // Allow imprecise offset matching unless the provided offset is precise
1532+ matchMinute = true ;
1533+ if ( offset ) {
1534+ const offsetParseResult = Call ( RegExpPrototypeExec , OFFSET_WITH_PARTS , [ offset ] ) ;
1535+ assert ( offsetParseResult , 'offset string must re-parse' ) ;
1536+ const offsetSecondsPart = offsetParseResult [ 4 ] ;
1537+ if ( offsetSecondsPart ) matchMinute = false ;
1538+ }
15251539 const resolvedOptions = GetOptionsObject ( options ) ;
15261540 disambiguation = GetTemporalDisambiguationOption ( resolvedOptions ) ;
15271541 offsetOpt = GetTemporalOffsetOption ( resolvedOptions , 'reject' ) ;
0 commit comments