grafana/k6 · error

invalid time format '%s'

Error message

invalid time format '%s'

What it means

Raised by ParseExtendedDuration, k6's duration parser that adds day (d) support on top of Go durations: when a 'd' unit is present, the remainder after the days part failed time.ParseDuration or was negative. Used for all duration-typed options.

Source

Thrown at lib/types/types.go:45

func ParseExtendedDuration(data string) (result time.Duration, err error) {
	// Assume millisecond values if data is provided with no units
	if t, errp := strconv.ParseFloat(data, 64); errp == nil {
		return time.Duration(t * float64(time.Millisecond)), nil
	}

	dPos := strings.IndexByte(data, 'd')
	if dPos < 0 {
		return time.ParseDuration(data)
	}

	var hours time.Duration
	if dPos+1 < len(data) { // case "12d"
		hours, err = time.ParseDuration(data[dPos+1:])
		if err != nil {
			return result, err
		}
		if hours < 0 {
			return 0, fmt.Errorf("invalid time format '%s'", data[dPos+1:])
		}
	}

	days, err := strconv.ParseInt(data[:dPos], 10, 64)
	if err != nil {
		return result, err
	}
	if days < 0 {
		hours = -hours
	}
	return time.Duration(days)*24*time.Hour + hours, nil
}

// UnmarshalText converts text data to Duration
func (d *Duration) UnmarshalText(data []byte) error {
	v, err := ParseExtendedDuration(string(data))
	if err != nil {
		return err

View on GitHub (pinned to 01ffac6f24)

Solutions

  1. Use valid Go duration units after days, e.g. 1d12h30m or 2d
  2. Avoid negative components like 1d-2h
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at lib/types/types.go:45 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of grafana/k6@01ffac6f24 (2026-08-18). Data as JSON: /api/errors/ca608f8c364a76b7. Report an issue: GitHub.