Files
zephyr/types/date.go

94 lines
1.5 KiB
Go
Raw Normal View History

2025-06-17 10:11:10 +02:00
package types
import (
"strings"
"time"
)
type ZephyrDate struct {
2025-06-18 08:44:52 +02:00
Date time.Time
2025-06-17 10:11:10 +02:00
}
func (date *ZephyrDate) UnmarshalJSON(b []byte) error {
s := strings.Trim(string(b), "\"")
if s == "" {
return nil
}
var err error
2025-06-18 08:44:52 +02:00
date.Date, err = time.Parse("Monday, 2006/01/02", s)
2025-06-17 10:11:10 +02:00
if err != nil {
return err
}
return nil
}
func (date ZephyrDate) MarshalJSON() ([]byte, error) {
2025-06-18 08:44:52 +02:00
if date.Date.IsZero() {
2025-06-17 10:11:10 +02:00
return []byte("\"\""), nil
}
2025-06-18 08:44:52 +02:00
fmtDate := date.Date.Format("Monday, 2006/01/02")
2025-06-17 10:11:10 +02:00
return []byte("\"" + fmtDate + "\""), nil
}
2025-07-31 16:06:57 +02:00
type ZephyrTime struct {
Time time.Time
}
func (t *ZephyrTime) UnmarshalJSON(b []byte) error {
s := strings.Trim(string(b), "\"")
if s == "" {
return nil
}
var err error
t.Time, err = time.Parse("15:04", s)
if err != nil {
return err
}
return nil
}
func (t ZephyrTime) MarshalJSON() ([]byte, error) {
if t.Time.IsZero() {
return []byte("\"\""), nil
}
fmtTime := t.Time.Format("3:04 PM")
return []byte("\"" + fmtTime + "\""), nil
}
type ZephyrAlertDate struct {
Date time.Time
}
func (t *ZephyrAlertDate) UnmarshalJSON(b []byte) error {
s := strings.Trim(string(b), "\"")
if s == "" {
return nil
}
var err error
t.Date, err = time.Parse("Monday, 2006/01/02 15:04", s)
if err != nil {
return err
}
return nil
}
func (t ZephyrAlertDate) MarshalJSON() ([]byte, error) {
if t.Date.IsZero() {
return []byte("\"\""), nil
}
fmtTime := t.Date.Format("Monday, 2006/01/02 3:04 PM")
return []byte("\"" + fmtTime + "\""), nil
}