正在查找Kubernetes CreationTimestamp的go代码->;年龄

正在查找Kubernetes CreationTimestamp的go代码->;年龄,go,kubernetes,kubectl,Go,Kubernetes,Kubectl,我试图从KubernetesAPI中获取命令输出中的“AGE”列值 > kubectl get po NAME READY STATUS RESTARTS AGE ingress-nginx-controller-56c75d774d-d7zx8 1/1 Running 1 29d nfs-client-provisioner-5cd984898b-s8fzh

我试图从KubernetesAPI中获取命令输出中的“AGE”列值

> kubectl get po
NAME                                        READY   STATUS    RESTARTS   AGE
ingress-nginx-controller-56c75d774d-d7zx8   1/1     Running   1          29d
nfs-client-provisioner-5cd984898b-s8fzh     1/1     Running   1          13d
这样我就可以得到CreationTimestamp了

Age:      volumeItem.ObjectMeta.CreationTimestamp.String(),
我试图找到进行时间转换的代码,但在kubernetes github repo中找不到

我喜欢将其转换为与kubectl相同的格式。因此,请给我一个例子,并指出在回购协议上执行此操作的正确行。

由于是类型,您只需使用获取当前时间和创建时间戳之间的差异,您将获得资源的年龄

您可以使用
time.Now()
获取当前时间戳

package main

import (
    "fmt"
    "time"
)

func main() {

    currentTime := time.Now()
    creationTime := currentTime.Add(time.Hour * 12)
    
    diff := creationTime.Sub(currentTime)
    fmt.Println("Age:", diff)
}
输出:

Age: 12h0m0s

注:以上内容用于示例目的,因为创建时间通常早于当前时间。

不是100%确定(这就是为什么我不回答,只是发表评论),但我猜是
now-creationTimestamp
传递给
HumanDuration()
从这里开始:
k8s.io/apimachinery/pkg/util/duration
@bulli,这就是我要找的人!!。。非常感谢。谢谢你的回答。我知道是时候了。kubectl正在对此进行格式化。例如,它不会显示“12h0m0s”之类的内容。根据差异,它有一个逻辑。有时它显示秒,有时它显示分钟、天等。这就是为什么我在k8s repo或任何地方要求提供代码片段的原因。
Age: 12h0m0s