| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // 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())
- }
|