Files
bssapp/svc/models/custom_time.go
2026-02-11 17:46:22 +03:00

46 lines
880 B
Go

package models
import (
"database/sql"
"strings"
"time"
)
type CustomTime struct {
sql.NullTime
}
func (ct *CustomTime) UnmarshalJSON(b []byte) error {
s := strings.Trim(string(b), `"`)
if s == "" || s == "null" {
ct.Valid = false
return nil
}
// DESTEKLENEN TÜM FORMATLAR
layouts := []string{
time.RFC3339, // 2025-11-21T00:10:27Z
"2006-01-02T15:04:05", // 2025-11-21T00:10:27
"2006-01-02 15:04:05", // 2025-11-21 00:10:27 ← FRONTEND FORMATIN!
}
for _, layout := range layouts {
if t, err := time.Parse(layout, s); err == nil {
ct.Time = t
ct.Valid = true
return nil
}
}
// Hâlâ parse edemediyse → invalid kabul et
ct.Valid = false
return nil
}
func (ct CustomTime) MarshalJSON() ([]byte, error) {
if ct.Valid {
return []byte(`"` + ct.Time.Format("2006-01-02 15:04:05") + `"`), nil
}
return []byte(`null`), nil
}