// package def_let_time -- внутреннее низменяемое время package def_let_time import ( "time" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_let" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_let_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 { *def_let.Let[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{ Let: def_let.NewLet(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{ Let: def_let.NewLet(val), } return sf } // LetTimeFromTuf -- десериализует из def_spec_base.ATxt в строки. func LetTimeFromTuf(txtMsg def_spec_base.ATxt) *option.Option[*def_let_err.LErr] { resRec := tuf.RecFromTuf("ETime", txtMsg) // Получить текст записи if resRec.IsErr() { err := def_let_err.LetErr("FromTuf(): in extract record from TUF, err=\n\t%v", resRec.Error()) return option.NewSome(err) } return option.NewNone[*def_let_err.LErr]() } // Get -- получить время. // // Вывод: "2006-01-02 15:04:05.000 -07 MST". func (sf *LTime) Get() def_spec_base.Time { return def_spec_base.Time(sf.Let.Get()) } // ToTuf -- сериализует себя в строку. func (sf *LTime) ToTuf() def_spec_base.ATxt { txtRes := tuf.StrToTuf("val", def_spec_base.ATxt(sf.Let.Get())) lenVal:=len(string(sf.Let.Get())) 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.Let.Get()) }