| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // 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/result"
- "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]
- owner *owner.LOwner
- }
- // MutTime -- возвращает новое внутреннее изменяемое время.
- func MutTime[T def_spec_fn.TxtConstraint](owner *owner.LOwner, val T) *MTime {
- helpers.If(owner == nil).Hassert("MutTime(): owner==nil")
- helpers.If(val == "").Hassert("MutTime(): val is empty")
- sf := &MTime{
- Mut: def_mut.NewMut(owner, def_spec_base.Time(val)),
- owner: owner,
- }
- return sf
- }
- // MutTimeAuto -- возвращает новое автоматическое внутреннее изменяемое время.
- //
- // Вывод: "2006-01-02 15:04:05.000 -07 MST".
- func MutTimeAuto(owner *owner.LOwner) *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(owner, val),
- owner: owner,
- }
- return sf
- }
- // MutTimeFromTuf -- десериализует из def_spec_base.ATxt в строки.
- func MutTimeFromTuf(owner *owner.LOwner, txtMsg def_spec_base.Txt) *result.Result[def_spec_base.Txt] {
- 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 result.ResErr[def_spec_base.Txt](err)
- }
- return resRec
- }
- // 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())
- }
|