{"record":{"id":"d54e915e3b30a2f8","repo":"mikefarah/yq","slug":"unable-to-parse-duration-v-w","errorCode":null,"errorMessage":"unable to parse duration [%v]: %w","messagePattern":"unable to parse duration \\[(.+?)\\]: %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/yqlib/operator_add.go","lineNumber":154,"sourceCode":"\t\t}\n\t\tsum := lhsNum + rhsNum\n\t\tif lhsIsCustom {\n\t\t\ttarget.Tag = lhs.Tag\n\t\t} else {\n\t\t\ttarget.Tag = \"!!float\"\n\t\t}\n\t\ttarget.Value = fmt.Sprintf(\"%v\", sum)\n\t} else {\n\t\treturn fmt.Errorf(\"%v cannot be added to %v\", lhsTag, rhsTag)\n\t}\n\treturn nil\n}\n\nfunc addDateTimes(layout string, target *CandidateNode, lhs *CandidateNode, rhs *CandidateNode) error {\n\n\tduration, err := time.ParseDuration(rhs.Value)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to parse duration [%v]: %w\", rhs.Value, err)\n\t}\n\n\tcurrentTime, err := parseDateTime(layout, lhs.Value)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewTime := currentTime.Add(duration)\n\ttarget.Value = newTime.Format(layout)\n\treturn nil\n\n}\n\nfunc addSequences(target *CandidateNode, lhs *CandidateNode, rhs *CandidateNode) {\n\tlog.Debugf(\"adding sequences! target: %v; lhs %v; rhs: %v\", NodeToString(target), NodeToString(lhs), NodeToString(rhs))\n\ttarget.Kind = SequenceNode\n\tif len(lhs.Content) == 0 {\n\t\tlog.Debugf(\"dont copy lhs style\")","sourceCodeStart":136,"sourceCodeEnd":172,"githubUrl":"https://github.com/mikefarah/yq/blob/8b5af0694bb82b41d4ae180fac9972029066f90a/pkg/yqlib/operator_add.go#L136-L172","documentation":"addDateTimes is adding a duration to a datetime (lhs), but time.ParseDuration rejected the right-hand scalar as a Go duration string. Valid durations look like '300ms', '-1.5h' or '2h45m' — a bare number, an ISO interval, or a misspelled unit fails here; the %w carries ParseDuration's own reason.","triggerScenarios":"Thrown at pkg/yqlib/operator_add.go:154 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use Go duration syntax with explicit units, e.g. \"24h\" or \"30m\"","Do not use bare numbers — '5' is invalid, '5m' is valid","Check for stray whitespace or invalid unit suffixes in the duration string"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8b5af0694bb82b41d4ae180fac9972029066f90a","analyzedAt":"2026-09-05T10:57:22.766Z","contentChangedAt":"2026-09-05T10:57:22.766Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}