yats.git

commit dbf87a3a1c67949d89ef6fd35e66a13b839e0f3b

Author: Paolo Lulli <paolo@lulli.net>

Parse from/to with --date YYYYMMDD

 client/main.go | 6 ++++--
 client/time-util.go | 13 +++++++++++--


diff --git a/client/main.go b/client/main.go
index 1397a849309c42c5365854250f31d0edc43ebd75..9bcd686a253090fe54c8f8858548ea5aad549e87 100644
--- a/client/main.go
+++ b/client/main.go
@@ -71,6 +71,8 @@ 	sinceHours := flag.BoolP("hour", "", false, "hours ago")
 	sinceDays := flag.BoolP("day", "", false, "days ago")
 	sinceYears := flag.BoolP("year", "", false, "years ago")
 
+	midnightOfDay := flag.BoolP("date", "", false, "midnight of day <YYMMDD>T00:00:00")
+
 	reformatOutput := flag.BoolP("format", "f", false, "format output")
 	logOutput := flag.BoolP("value-only", "l", false, "log value only output")
 	decodeBase64Output := flag.BoolP("base64-decode", "b", false, "decode base64 output")
@@ -82,13 +84,13 @@ 	var fromTimestamp int64
 	var toTimestamp int64
 
 	if *fromOption != 0 {
-		fromTimestamp = calculateCutDate(*fromOption, sinceSeconds, sinceMinutes, sinceHours, sinceDays, sinceYears)
+		fromTimestamp = calculateCutDate(*fromOption, sinceSeconds, sinceMinutes, sinceHours, sinceDays, sinceYears, midnightOfDay)
 	} else {
 		fromTimestamp = 0
 	}
 
 	if *toOption != 0 {
-		toTimestamp = calculateCutDate(*toOption, sinceSeconds, sinceMinutes, sinceHours, sinceDays, sinceYears)
+		toTimestamp = calculateCutDate(*toOption, sinceSeconds, sinceMinutes, sinceHours, sinceDays, sinceYears, midnightOfDay)
 	} else {
 		toTimestamp = 0
 	}




diff --git a/client/time-util.go b/client/time-util.go
index 3d4b2390fa1bf43c6f9b1261e734808caf4c9d7f..2e507ff64a28bbdf1a461ff34c09cb8f4281dac8 100644
--- a/client/time-util.go
+++ b/client/time-util.go
@@ -9,14 +9,17 @@  * @copyright Paolo Lulli 2024
  */
 package main
 
-import "time"
+import (
+	"fmt"
+	"time"
+)
 
 func formattedUtcTimeInSec(int64Ts int64) string {
 	unixTimeUTC := time.UnixMilli(int64Ts)
 	return unixTimeUTC.Format(time.RFC3339)
 }
 
-func calculateCutDate(ts int64, sinceSeconds *bool, sinceMinutes *bool, sinceHours *bool, sinceDays *bool, sinceYears *bool) int64 {
+func calculateCutDate(ts int64, sinceSeconds *bool, sinceMinutes *bool, sinceHours *bool, sinceDays *bool, sinceYears *bool, midnightOfDay *bool) int64 {
 	if 0 != ts {
 		if *sinceSeconds {
 			return time.Now().Unix() - ts
@@ -32,6 +35,12 @@ 			return time.Now().Unix() - ts*60*60*24
 		}
 		if *sinceYears {
 			return time.Now().Unix() - ts*60*60*24*365
+		}
+		if *midnightOfDay {
+			timeString := fmt.Sprintf("%d", ts)
+			YYYYMMDD := "20060102"
+			t, _ := time.Parse(YYYYMMDD, timeString)
+			return t.Unix()
 		}
 	}
 	return ts