util.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package util
  2. import (
  3. "bytes"
  4. "fmt"
  5. "io"
  6. "math"
  7. "time"
  8. "github.com/pkg/errors"
  9. "kpt.xdmy/pkg/log"
  10. )
  11. func Bool() {
  12. }
  13. func Zero(b bool) int {
  14. if b {
  15. return 1
  16. }
  17. return 0
  18. }
  19. func ZeroStr(b bool, s string) string {
  20. if b {
  21. return s
  22. }
  23. return ""
  24. }
  25. func ParseDate(d string) (res time.Time, err error) {
  26. if len(d) == 8 {
  27. d = d[:4] + "-" + d[4:6] + "-" + d[6:]
  28. }
  29. res, err = time.ParseInLocation("2006-01-02", d, time.Local)
  30. if err != nil {
  31. err = errors.Wrapf(err, "util ParseDate %s", d)
  32. log.Print(err.Error())
  33. }
  34. return
  35. }
  36. func ParseDateAndTime(d, t string) (res time.Time, e error) {
  37. if d == "00000000" {
  38. return time.Now(), nil
  39. }
  40. if len(d) == 8 {
  41. d = d[:4] + "-" + d[4:6] + "-" + d[6:]
  42. }
  43. if len(t) == 6 {
  44. t = t[:2] + ":" + t[2:4] + ":" + t[4:]
  45. }
  46. if t != "" {
  47. d = d + " " + t
  48. }
  49. if res, e = time.ParseInLocation("2006-01-02 15:04:05", d, time.Local); e != nil {
  50. e = errors.Wrapf(e, "util ParseDateAndTime %s %s", d, t)
  51. }
  52. return
  53. }
  54. func Unmarshal(p interface{}, res interface{}) (e error) {
  55. b := []byte{}
  56. switch p.(type) {
  57. case string:
  58. b = []byte(p.(string))
  59. case []byte:
  60. b = p.([]byte)
  61. default:
  62. if b, e = json.Marshal(p); e != nil {
  63. return errors.Wrapf(e, "util Unmarshal")
  64. }
  65. }
  66. fmt.Println(string(b))
  67. e = json.Unmarshal(b, res)
  68. // defer func(e error) {
  69. // if e != nil {
  70. // log.Error("json UnMarshal ", e)
  71. // }
  72. // }(e)
  73. return errors.Wrapf(e, "util Unmarshal")
  74. }
  75. func UnmarshalNoflag(p interface{}, res interface{}) (err error) {
  76. b := make([]byte, 0)
  77. switch p.(type) {
  78. case string:
  79. b = []byte(p.(string))
  80. case []byte:
  81. b = p.([]byte)
  82. default:
  83. b, err = json.Marshal(p)
  84. if err != nil {
  85. return
  86. }
  87. }
  88. err = json.Unmarshal(b, res)
  89. return
  90. }
  91. func Marshal(p interface{}) (b []byte, err error) {
  92. // json.MarshalIndent(p, "", " ")
  93. if b, err = json.Marshal(p); err != nil {
  94. log.Error("json Marshal error:", err, p)
  95. }
  96. return
  97. }
  98. func JsonMarshal(p interface{}) (r io.Reader, err error) {
  99. if p == nil {
  100. return
  101. }
  102. var b []byte
  103. switch p.(type) {
  104. case string:
  105. b = []byte(p.(string))
  106. case []byte:
  107. b = p.([]byte)
  108. default:
  109. b, err = json.Marshal(p)
  110. if err != nil {
  111. err = log.Error("failed to marshal", err, p)
  112. return
  113. }
  114. }
  115. r = bytes.NewBuffer(b)
  116. return
  117. }
  118. func NewMap(name string, value interface{}) map[string]interface{} {
  119. return map[string]interface{}{
  120. name: value,
  121. }
  122. }
  123. func Round(number float64, size int) float64 {
  124. return math.Round(number*100) / 100
  125. }