| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package etime
- import (
- "encoding/json"
- "fmt"
- "time"
- mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
- )
- // ETime -- метка времени.
- // Вывод: "2006-01-02 15:04:05.000 -07 MST".
- type ETime struct {
- defs.ITimeFix
- isFill bool // Признак заполнения
- }
- // NewETime -- создает новый экземпляр ETime.
- func NewETime(val defs.ITimeFix) mKs.ITime {
- helpers.If(val.Get() == "").Hassert("NewETime(): val is empty")
- sf := &ETime{
- ITimeFix: val,
- isFill: true,
- }
- return sf
- }
- // NewETimeAuto -- создаёт фиксированную авто-метку времени.
- func NewETimeAuto() mKs.ITime {
- sf := &ETime{
- isFill: true,
- }
- val := defs.TxtFix(time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST"))
- sf.Set(defs.ITimeFix(val))
- return sf
- }
- // NewETimeAutoMut -- создаёт изменяемую авто-метку времени.
- func NewETimeAutoMut() mKs.ITimeMut {
- sf := &ETime{
- isFill: true,
- }
- val := defs.TxtFix(time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST"))
- sf.Set(val)
- return sf
- }
- // String -- возвращает строку.
- func (sf *ETime) String() string {
- helpers.If(sf.Get() == "").Hassert("ETime.String(): значение не инициализировано")
- return sf.ITimeFix.String()
- }
- // Time -- возвращает типизированную строку.
- func (sf *ETime) Time() defs.ITimeFix {
- helpers.If(sf.Get() == "").Hassert("ETime.Time(): значение не инициализировано")
- return sf.ITimeFix
- }
- // Set -- устанавливает типизированное значение.
- func (sf *ETime) Set(val defs.ITimeFix) {
- helpers.If(val.Get() == "").Hassert("ETime.Set(): val is empty")
- sf.ITimeFix = val
- }
- // MarshalJSON -- сериализует себя в строку.
- func (sf *ETime) MarshalJSON() ([]byte, error) {
- binMsg, err := json.Marshal(sf)
- if err != nil {
- err = fmt.Errorf("ETime.MarshalJSON(): in self marshall, err=\n\t%w", err)
- return nil, err
- }
- return binMsg, err
- }
- // UnmarshalJSON -- десериализует из строки.
- func (sf *ETime) UnmarshalJSON(binMsg []byte) error {
- if err := json.Unmarshal(binMsg, sf); err != nil {
- return fmt.Errorf("ETime.UnmarshalJSON(): in self unmarshall, err=\n\t%w", err)
- }
- return nil
- }
|