Passing Build Time in Go December 22, 2020 • Fahad Siddiqui To pass build time stamp in Go, you can use -ldflags when running go build. For example you have a variable residing in the package abc/build.go As package abc var ( BuildTime = "Tue Dec 22 13:22:49 PKT 2020" ) You will do the following and pass value of $(date) (through shell) By default the date will format string as Unix timestamp go build -ldflags="-X 'abc.BuildTime=$(date)'" We can now use time’s function .Parse(layout, str) to process this string as a time stamp in go. t1, err := time.Parse(time.UnixDate, BuildTime) Here you can see the full example + a bonus function which calculates the elapsed time also (GetStringForBuildTime()). package abc import ( "fmt" "math" "strings" "time" ) var ( BuildTime = "Tue Dec 22 13:22:49 PKT 2020" ) func BuildTimeElapsed() (hs float64, ms float64, ss float64) { t1, err := time.Parse(time.UnixDate, BuildTime) if err != nil { return 0, 0, 0 } t2 := time.Now() var mf, sf float64 hs = t2.Sub(t1).Hours() hs, mf = math.Modf(hs) ms = mf * 60 ms, sf = math.Modf(ms) ss = sf * 60 return } func GetStringForBuildTime() string { h, m, s := BuildTimeElapsed() var tsList []string if h > 0 { tsList = append(tsList, fmt.Sprintf("%.f hour(s)", h)) } if m > 0 { tsList = append(tsList, fmt.Sprintf("%.f minute(s)", m)) } if s > 0 { tsList = append(tsList, fmt.Sprintf("%.2f second(s)", s)) } return strings.Join(tsList, ", ") } Have fun, coding! Please enable JavaScript to view the comments powered by Disqus.