From 29ec943d137ea24dddc435b70647963d7e4ce101 Mon Sep 17 00:00:00 2001 From: sainw Date: Thu, 4 Jun 2026 11:16:13 +0630 Subject: [PATCH] add date format --- build_lib.sh | 2 +- cmd/main.go | 2 +- img.go | 35 +++++++++++++++++++++++++++++++++-- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/build_lib.sh b/build_lib.sh index 0610081..b86a603 100755 --- a/build_lib.sh +++ b/build_lib.sh @@ -1,7 +1,7 @@ #!/bin/bash APP_NAME="libgofunc" -VERSION="${1:-v0.1.7}" +VERSION="${1:-v0.1.8}" OUTPUT_DIR="../assets" BUILD_DIR="../build" diff --git a/cmd/main.go b/cmd/main.go index b151738..02fec58 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -26,7 +26,7 @@ func main() {

Address: မင်္ဂလာပါ {{(index .sales 0).salePerson}}

Receipt: RCPT001

Phone: 0977777777

-

Date: 4 Jan 2026 15:38:38

+

Date: {{formatDateFromSec (index .sales 0).timeSec "2006-01-02 15:04:05"}}

Car No.: 3J/3883

Casher: မနှင်းနှင်း

MOP: B2B

diff --git a/img.go b/img.go index 40689a5..93bf838 100644 --- a/img.go +++ b/img.go @@ -28,6 +28,7 @@ import ( "log" "path" "strconv" + "time" "golang.org/x/text/language" "golang.org/x/text/message" @@ -114,8 +115,9 @@ func GenImg(width int, outputPath, payload, tmpl, workingDir string) string { } var funcMap = template.FuncMap{ - "formatNumber": FormatNumber, - "div": Div, + "formatNumber": FormatNumber, + "div": Div, + "formatDateFromSec": formatDateFromSec, } func renderTemplate(tmp string, data map[string]interface{}) (string, error) { @@ -518,3 +520,32 @@ func convertToFloat64(v any) float64 { return 0 } } + +func formatDateFromSec(input any, layout string) string { + var sec int64 + switch v := input.(type) { + case int64: + sec = v + case int: + sec = int64(v) + case float64: + sec = int64(v) + case float32: + sec = int64(v) + case string: + parsed, err := strconv.ParseInt(v, 10, 64) + if err != nil { + if parsedFloat, errFloat := strconv.ParseFloat(v, 64); errFloat == nil { + sec = int64(parsedFloat) + } else { + return fmt.Sprintf("[Error: invalid time string %q]", v) + } + } else { + sec = parsed + } + default: + return "[Error: unsupported time type]" + } + t := time.UnixMilli(sec * 1000) + return t.Format(layout) +}