From 2d861ac14ad5b677717f357bd57c3f56f06307d5 Mon Sep 17 00:00:00 2001
From: Daniel J Walsh <dwalsh@redhat.com>
Date: Fri, 20 Nov 2020 10:47:00 -0500
Subject: Handle ps container created field as a time.Time

In the current code we were translating the created time
from a time.Time to a unix epoch, this was leading to a loss
of precession, and some unexpected results where the sorting
order of containers was misordered because of the precession loss.

If we pass around created as time.Time, we do not loose the precission.

Fixes: https://github.com/containers/podman/issues/8414

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
---
 cmd/podman/containers/ps.go | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'cmd/podman')

diff --git a/cmd/podman/containers/ps.go b/cmd/podman/containers/ps.go
index a1a41ae08..dcbd5657a 100644
--- a/cmd/podman/containers/ps.go
+++ b/cmd/podman/containers/ps.go
@@ -126,7 +126,7 @@ func checkFlags(c *cobra.Command) error {
 func jsonOut(responses []entities.ListContainer) error {
 	r := make([]entities.ListContainer, 0)
 	for _, con := range responses {
-		con.CreatedAt = units.HumanDuration(time.Since(time.Unix(con.Created, 0))) + " ago"
+		con.CreatedAt = units.HumanDuration(time.Since(con.Created)) + " ago"
 		con.Status = psReporter{con}.Status()
 		r = append(r, con)
 	}
@@ -386,12 +386,12 @@ func (l psReporter) Ports() string {
 // CreatedAt returns the container creation time in string format.  podman
 // and docker both return a timestamped value for createdat
 func (l psReporter) CreatedAt() string {
-	return time.Unix(l.Created, 0).String()
+	return l.Created.String()
 }
 
 // CreateHuman allows us to output the created time in human readable format
 func (l psReporter) CreatedHuman() string {
-	return units.HumanDuration(time.Since(time.Unix(l.Created, 0))) + " ago"
+	return units.HumanDuration(time.Since(l.Created)) + " ago"
 }
 
 // Cgroup exposes .Namespaces.Cgroup
-- 
cgit v1.2.3-54-g00ecf