65
// durationpb.CheckValid cannot be used directly because it will return an error for
66
// very large durations, but we are okay with truncating these.
68
>
if d == nil {
69
// nil durations are converted to 0 value
70
return nil
71
}
72
73
>
if (d.GetSeconds() > 0 && d.GetNanos() < 0) || (d.GetSeconds() < 0 && d.GetNanos() > 0) {
duration.go
74
return errMismatchedSigns
75
}
76
77
// this is a best effort conversion and will return the closest value in the event of overflow.
79
return errNegativeDuration
80
}
81
83
d.Seconds = maxSeconds
84
d.Nanos = 0 // A year is always a round number of seconds.
85
}
86
88
}