diff --git a/pkg/kubectl/resource_printer.go b/pkg/kubectl/resource_printer.go index 76e28aebcee..309e5c99c15 100644 --- a/pkg/kubectl/resource_printer.go +++ b/pkg/kubectl/resource_printer.go @@ -361,7 +361,13 @@ func podHostString(host, ip string) string { } func shortHumanDuration(d time.Duration) string { - if seconds := int(d.Seconds()); seconds < 60 { + // Allow deviation no more than 2 seconds(excluded) to tolerate machine time + // inconsistence, it can be considered as almost now. + if seconds := int(d.Seconds()); seconds < -1 { + return fmt.Sprintf("") + } else if seconds < 0 { + return fmt.Sprintf("0s") + } else if seconds < 60 { return fmt.Sprintf("%ds", seconds) } else if minutes := int(d.Minutes()); minutes < 60 { return fmt.Sprintf("%dm", minutes) diff --git a/pkg/kubectl/resource_printer_test.go b/pkg/kubectl/resource_printer_test.go index ebc7ab7a437..1a15740e531 100644 --- a/pkg/kubectl/resource_printer_test.go +++ b/pkg/kubectl/resource_printer_test.go @@ -1104,6 +1104,8 @@ type stringTestList []struct { func TestTranslateTimestamp(t *testing.T) { tl := stringTestList{ + {"a while from now", translateTimestamp(util.Time{Time: time.Now().Add(2.1e9)}), ""}, + {"almost now", translateTimestamp(util.Time{Time: time.Now().Add(1.9e9)}), "0s"}, {"now", translateTimestamp(util.Time{Time: time.Now()}), "0s"}, {"unknown", translateTimestamp(util.Time{}), ""}, {"30 seconds ago", translateTimestamp(util.Time{Time: time.Now().Add(-3e10)}), "30s"},