// package def_time -- внутреннее низменяемое время package def_time import ( "time" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_err" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_base" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_fn" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/option" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/tuf" ) // LTime -- внутренее неизменяемое время. // // Вывод: "2006-01-02 15:04:05.000 -07 MST". type LTime struct { val def_spec_base.Time } // LetTime -- возвращает новое внутреннее неизменяемое время. func LetTime[T def_spec_fn.TxtConstraint](val T) *LTime { helpers.If(val == "").Hassert("LetTime(): val is empty") sf := <ime{ val: def_spec_base.Time(val), } return sf } // LetTimeAuto -- возвращает новое автоматическое внутреннее неизменяемое время. // // Вывод: "2006-01-02 15:04:05.000 -07 MST". func LetTimeAuto() *LTime { _val := time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST") val := def_spec_base.Time(_val) sf := <ime{ val: val, } return sf } // LetTimeFromTuf -- десериализует из def_spec_base.ATxt. func LetTimeFromTuf(txtMsg def_spec_base.Txt) *option.Option[*def_err.LErr] { resRec := tuf.RecFromTuf("ETime", txtMsg) // Получить текст записи if resRec.IsErr() { err := def_err.LetErr("FromTuf(): 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 *LTime) Get() def_spec_base.Time { return sf.val } // ToTuf -- сериализует себя в строку. func (sf *LTime) ToTuf() def_spec_base.Txt { txtRes := tuf.StrToTuf("val", def_spec_base.Txt(sf.val)) lenVal := len(sf.val) isFill := def_spec_base.Bool(lenVal > 0) txtRes += tuf.BoolToTuf("isFill", isFill) txtRes = tuf.RecToTuf("LTime", txtRes) return txtRes } // String -- возвращает строку. func (sf *LTime) String() string { return string(sf.val) }