summaryrefslogtreecommitdiff
path: root/time.go
diff options
context:
space:
mode:
Diffstat (limited to 'time.go')
-rw-r--r--time.go82
1 files changed, 82 insertions, 0 deletions
diff --git a/time.go b/time.go
new file mode 100644
index 0000000..8dda83a
--- /dev/null
+++ b/time.go
@@ -0,0 +1,82 @@
+package shell
+
+import (
+ "fmt"
+ "strconv"
+ "strings"
+ "time"
+
+ "go.wit.com/log"
+)
+
+// converts a git for-each-ref date. "Wed Feb 7 10:13:38 2024 -0600"
+func getGitDateStamp(gitdefault string) (time.Time, string, string) {
+ // now := time.Now().Format("Wed Feb 7 10:13:38 2024 -0600")
+ const gitLayout = "Mon Jan 2 15:04:05 2006 -0700"
+ tagTime, err := time.Parse(gitLayout, gitdefault)
+ if err != nil {
+ log.Warn("GOT THIS IN PARSE AAA." + gitdefault + ".AAA")
+ log.Warn(err)
+ return time.Now(), "Feb 1 12:34:56 1978 -0600", ""
+ }
+ return tagTime, gitdefault, GetDurationStamp(tagTime)
+}
+func getRawDateStamp(raw string) (time.Time, string, string) {
+ parts := strings.Split(raw, " ")
+ if len(parts) == 0 {
+ // raw was blank here
+ // return "Jan 4 1977", "40y" // eh, why not. it'll be easy to grep for this
+ return time.Now(), "Jan 4 1977", "40y" // eh, why not. it'll be easy to grep for this
+ }
+ i, err := strconv.ParseInt(parts[0], 10, 64) // base 10 string, return int64
+ if err != nil {
+ log.Warn("Error converting timestamp:", raw)
+ log.Warn("Error converting timestamp err =", err)
+ return time.Now(), "", ""
+ }
+
+ // Parse the Unix timestamp into a time.Time object
+ gitTagDate := time.Unix(i, 0)
+ return gitTagDate, gitTagDate.UTC().Format("2006/01/02 15:04:05 UTC"), GetDurationStamp(gitTagDate)
+}
+
+func GetDurationStamp(t time.Time) string {
+
+ // Get the current time
+ currentTime := time.Now()
+
+ // Calculate the duration between t current time
+ duration := currentTime.Sub(t)
+
+ return FormatDuration(duration)
+}
+
+func FormatDuration(d time.Duration) string {
+ seconds := int(d.Seconds()) % 60
+ minutes := int(d.Minutes()) % 60
+ hours := int(d.Hours()) % 24
+ days := int(d.Hours()) / 24
+ years := int(d.Hours()) / (24 * 365)
+
+ result := ""
+ if years > 0 {
+ result += fmt.Sprintf("%dy ", years)
+ return result
+ }
+ if days > 0 {
+ result += fmt.Sprintf("%dd ", days)
+ return result
+ }
+ if hours > 0 {
+ result += fmt.Sprintf("%dh ", hours)
+ return result
+ }
+ if minutes > 0 {
+ result += fmt.Sprintf("%dm ", minutes)
+ return result
+ }
+ if seconds > 0 {
+ result += fmt.Sprintf("%ds", seconds)
+ }
+ return result
+}