| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package etime
- import (
- "encoding/json"
- "fmt"
- "time"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
- mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kspec"
- )
- // ETime -- метка времени.
- // Вывод: "2006-01-02 15:04:05.000 -07 MST".
- type ETime struct {
- val defs.Time
- isMut bool // Мутабельность
- isFill bool // Признак заполнения
- }
- // NewETime -- создает новый экземпляр ETime.
- func NewETime(val defs.Time) mKs.ITime {
- helpers.Hassert(val != "", "NewETime(): val is empty")
- sf := &ETime{
- val: val,
- isFill: true,
- }
- return sf
- }
- // NewETimeAuto -- создаёт фиксированную авто-метку времени.
- func NewETimeAuto() mKs.ITime {
- sf := &ETime{
- isFill: true,
- }
- val := time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST")
- sf.Set(defs.Time(val))
- return sf
- }
- // NewETimeAutoMut -- создаёт изменяемую авто-метку времени.
- func NewETimeAutoMut() mKs.ITimeMut {
- sf := &ETime{
- isFill: true,
- isMut: true,
- }
- val := time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST")
- sf.Set(defs.Time(val))
- return sf
- }
- // String -- возвращает строку.
- func (sf *ETime) String() string {
- helpers.Hassert(sf.val != "", "ETime.String(): значение не инициализировано")
- return string(sf.val)
- }
- // Get -- возвращает типизированную строку.
- func (sf *ETime) Get() defs.Time {
- helpers.Hassert(sf.val != "", "ETime.Get(): значение не инициализировано")
- return sf.val
- }
- // Set -- устанавливает типизированное значение.
- func (sf *ETime) Set(val defs.Time) {
- helpers.Hassert(sf.isMut, "ETime.Set(): значение фиксировано")
- helpers.Hassert(val != "", "ETime.Set(): val is empty")
- sf.val = val
- }
- // MarshalJSON -- сериализует себя в строку.
- func (sf *ETime) MarshalJSON() ([]byte, error) {
- binMsg, err := json.Marshal(sf)
- if err != nil {
- err = fmt.Errorf("ETime.MarshalJSON(): in self marshall, err=\n\t%w", err)
- return nil, err
- }
- return binMsg, err
- }
- // UnmarshalJSON -- десериализует из строки.
- func (sf *ETime) UnmarshalJSON(binMsg []byte) error {
- if err := json.Unmarshal(binMsg, sf); err != nil {
- return fmt.Errorf("ETime.UnmarshalJSON(): in self unmarshall, err=\n\t%w", err)
- }
- return nil
- }
|