package etime import ( "time" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/tuf" ) // ETime -- метка времени. // Вывод: "2006-01-02 15:04:05.000 -07 MST". type ETime struct { core_spec.ITimeFix isFill defs.Bool // Признак заполнения } // NewETime -- создает новый экземпляр ETime. func NewETime(val core_spec.ITimeFix) core_spec.ITime { helpers.If(val.Get() == "").Hassert("NewETime(): val is empty") sf := &ETime{ ITimeFix: val, isFill: true, } return sf } // NewETimeAuto -- создаёт фиксированную авто-метку времени. func NewETimeAuto() core_spec.ITime { sf := &ETime{ isFill: true, } val := defs.TxtFix(time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST")) sf.Set(core_spec.ITimeFix(val)) return sf } // NewETimeAutoMut -- создаёт изменяемую авто-метку времени. func NewETimeAutoMut() core_spec.ITimeMut { sf := &ETime{ isFill: true, } val := defs.TxtFix(time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST")) sf.Set(val) return sf } // String -- возвращает строку. func (sf *ETime) String() string { helpers.If(sf.Get() == "").Hassert("ETime.String(): значение не инициализировано") return sf.ITimeFix.String() } // Time -- возвращает типизированную строку. func (sf *ETime) Time() core_spec.ITimeFix { helpers.If(sf.Get() == "").Hassert("ETime.Time(): значение не инициализировано") return sf.ITimeFix } // Set -- устанавливает типизированное значение. func (sf *ETime) Set(val core_spec.ITimeFix) { helpers.If(val.Get() == "").Hassert("ETime.Set(): val is empty") sf.ITimeFix = val } // ToTuf -- сериализует себя в строку. func (sf *ETime) ToTuf() defs.ATxt { txtRes := tuf.StrToTuf("val", sf.Get()) txtRes += tuf.BoolToTuf("isFill", sf.isFill) txtRes = tuf.RecToTuf("ETime", txtRes) return txtRes } // FromTuf -- десериализует из defs.ATxt в строки. func (sf *ETime) FromTuf(txtMsg defs.ATxt) defs.IOption[defs.IErr] { resRec := tuf.RecFromTuf("ETime", txtMsg) // Получить текст записи if resRec.IsErr() { err := defs.Err("ETime.FromTuf(): in extract record from TUF, err=\n\t%v", resRec.Error()) return defs.NewSome(err) } return defs.NewNone[defs.IErr]() }