atime.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package atime
  2. import (
  3. "time"
  4. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark"
  5. )
  6. // ATime -- метка времени.
  7. // Вывод: "2006-01-02 15:04:05.000 -07 MST".
  8. type ATime struct {
  9. val *quark.QStr[quark.Fix]
  10. }
  11. // FnOptAtime -- тп функции опции времени для установки значения.
  12. type FnOptAtime func() string
  13. // OptAtime -- функция для установки значения.
  14. func OptAtime(val string) FnOptAtime {
  15. return func() string {
  16. return val
  17. }
  18. }
  19. // NewATime -- создает новый экземпляр ATime.
  20. func NewATime(lstFn ...FnOptAtime) *ATime {
  21. var val string
  22. for _, fn := range lstFn {
  23. val = fn()
  24. }
  25. if val == "" {
  26. val = time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST")
  27. }
  28. qStr := quark.NewQStr(val)
  29. return &ATime{
  30. val: qStr,
  31. }
  32. }
  33. // String -- возвращает строку.
  34. //
  35. //go:fix inline
  36. func (a *ATime) String() string {
  37. return a.val.Val().Get()
  38. }
  39. // Get -- возвращает строку.
  40. //
  41. //go:fix inline
  42. func (a *ATime) Get() string {
  43. return a.val.Val().Get()
  44. }
  45. // ATimeMut -- метка времени.
  46. // Вывод: "2006-01-02 15:04:05.000 -07 MST".
  47. type ATimeMut struct {
  48. val *quark.QStr[quark.Mut]
  49. }
  50. // NewATimeMut -- создает новый экземпляр ATimeMut.
  51. func NewATimeMut(lstFn ...FnOptAtime) *ATimeMut {
  52. var val string
  53. for _, fn := range lstFn {
  54. val = fn()
  55. }
  56. if val == "" {
  57. val = time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST")
  58. }
  59. qStr := quark.NewQStrMut(val)
  60. return &ATimeMut{
  61. val: qStr,
  62. }
  63. }