// package def_time -- внутреннее изменяемое время package def_time import ( "time" "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_err" "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_mut" "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_base" "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_fn" "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner" "gitp78su.ipnodns.ru/svi/kern/v4/d0/helpers" "gitp78su.ipnodns.ru/svi/kern/v4/d0/option" "gitp78su.ipnodns.ru/svi/kern/v4/d0/tuf" ) // MTime -- внутренее изменяемое время. // // Вывод: "2006-01-02 15:04:05.000 -07 MST". type MTime struct { *def_mut.Mut[def_spec_base.Time] } // MutTime -- возвращает новое внутреннее изменяемое время. func MutTime[T def_spec_fn.TxtConstraint](val T) *MTime { helpers.If(val == "").Hassert("MutTime(): val is empty") sf := &MTime{ Mut: def_mut.NewMut(def_spec_base.Time(val)), } return sf } // MutTimeAuto -- возвращает новое автоматическое внутреннее изменяемое время. // // Вывод: "2006-01-02 15:04:05.000 -07 MST". func MutTimeAuto() *MTime { _val := time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST") val := def_spec_base.Time(_val) sf := &MTime{ Mut: def_mut.NewMut(val), } return sf } // MutTimeFromTuf -- десериализует из def_spec_base.ATxt в строки. func MutTimeFromTuf(owner *owner.LOwner, txtMsg def_spec_base.Txt) *option.Option[*def_err.LErr] { resRec := tuf.RecFromTuf(owner, "ETime", txtMsg) // Получить текст записи if resRec.IsErr() { err := def_err.LetErr(owner, "MutTimeFromTuf(): in extract record from TUF, err=\n\t%v", resRec.Error()) return option.NewSome(err) } return option.NewNone[*def_err.LErr]() } // Get -- получить время. // // Вывод: "2006-01-02 15:04:05.000 -07 MST". func (sf *MTime) Get() def_spec_base.Time { return def_spec_base.Time(sf.Mut.Get()) } // ToTuf -- сериализует себя в строку. func (sf *MTime) ToTuf() def_spec_base.Txt { txtRes := tuf.StrToTuf("val", def_spec_base.Txt(sf.Mut.Get())) lenVal := len(string(sf.Mut.Get())) isFill := def_spec_base.Bool(lenVal > 0) txtRes += tuf.BoolToTuf("isFill", isFill) txtRes = tuf.RecToTuf("MTime", txtRes) return txtRes } // Set -- устанавливает типизированное значение. func (sf *MTime) Set(val def_spec_base.Time) { helpers.If(val == "").Hassert("MTime.Set(): val is empty") sf.Mut.Set(val) } // String -- возвращает строку. func (sf *MTime) String() string { return string(sf.Mut.Get()) }