string.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package tools
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/gin-gonic/gin"
  6. "io/ioutil"
  7. "strconv"
  8. "time"
  9. )
  10. func StringToInt64(e string) (int64, error) {
  11. return strconv.ParseInt(e, 10, 64)
  12. }
  13. func StringToInt(e string) (int, error) {
  14. return strconv.Atoi(e)
  15. }
  16. func GetCurrntTimeStr() string {
  17. NowTimeZone := time.FixedZone("CST", 8*3600)
  18. //time.Local, _ = time.LoadLocation("Asia/Chongqing")
  19. //timelocal := time.LoadLocation("Asia/Chongqing")
  20. //time.Local = timelocal
  21. //time.LoadLocation("Asia/Chongqing")
  22. //return time.Now().Local().Format("2006-01-02 15:04:05")
  23. return time.Now().In(NowTimeZone).Format("2006-01-02 15:04:05")
  24. }
  25. func SubTimeSecond(inDate string) int64 {
  26. NowTimeZone := time.FixedZone("CST", 8*3600)
  27. timeLayout := "2006-01-02 15:04:05" //转化所需模板
  28. stamp, _ := time.ParseInLocation(timeLayout, inDate, time.Local)
  29. sr := stamp.Unix()
  30. timestamp := time.Now().In(NowTimeZone).Format("2006-01-02 15:04:05")
  31. now, _ := time.ParseInLocation(timeLayout, timestamp, time.Local)
  32. return now.Unix() - sr
  33. }
  34. func GetStringToTime(ti string) (time.Time, error) {
  35. t := time.Now() //当前时间
  36. t.Unix() //时间戳
  37. st, err := time.Parse("2006-01-02", ti) //string转time
  38. if err != nil {
  39. return time.Time{}, err
  40. }
  41. return st, nil
  42. }
  43. //获取日期
  44. func GetCurrntDateStr() string {
  45. NowTimeZone := time.FixedZone("CST", 8*3600)
  46. return time.Now().In(NowTimeZone).Format("2006-01-02")
  47. }
  48. func GetPayRemainingTime(inDate string) int64 {
  49. NowTimeZone := time.FixedZone("CST", 8*3600)
  50. timeLayout := "2006-01-02 15:04:05" //转化所需模板
  51. //fmt.Println("inDate = ", inDate)
  52. stamp, _ := time.ParseInLocation(timeLayout, inDate, time.Local)
  53. sr := stamp.Unix()
  54. timestamp := time.Now().In(NowTimeZone).Format("2006-01-02 15:04:05")
  55. now, _ := time.ParseInLocation(timeLayout, timestamp, time.Local)
  56. fmt.Println("sr = ", sr)
  57. fmt.Println("timestamp", now.Unix())
  58. return 900 - (now.Unix() - sr)
  59. }
  60. //输入日期减去当前日期
  61. func InDateSubNow(inDate string) int64 {
  62. NowTimeZone := time.FixedZone("CST", 8*3600)
  63. timeLayout := "2006-01-02 15:04:05" //转化所需模板
  64. //fmt.Println("inDate = ", inDate)
  65. stamp, _ := time.ParseInLocation(timeLayout, inDate, time.Local)
  66. sr := stamp.Unix()
  67. timestamp := time.Now().In(NowTimeZone).Format("2006-01-02 15:04:05")
  68. now, _ := time.ParseInLocation(timeLayout, timestamp, time.Local)
  69. return sr - now.Unix()
  70. }
  71. //输入日期相减得出天数
  72. func DateSubDate(startDate string, endDate string) (float64, error) {
  73. timeLayout := "2006-01-02" //转化所需模板
  74. start, err := time.ParseInLocation(timeLayout, startDate, time.Local)
  75. if err != nil {
  76. return 0, err
  77. }
  78. end, err := time.ParseInLocation(timeLayout, endDate, time.Local)
  79. if err != nil {
  80. return 0, err
  81. }
  82. return start.Sub(end).Hours(), nil
  83. }
  84. func TimeToStr(tm int64) string {
  85. timeLayout := "2006-01-02 15:04:05"
  86. // time.Unix的第二个参数传递0或10结果一样,因为都不大于1e9
  87. timeStr := time.Unix(tm, 0).Format(timeLayout)
  88. return timeStr
  89. }
  90. //加天数
  91. func DateAdd(startDate string, num time.Duration) (string, error) {
  92. timeLayout := "2006-01-02" //转化所需模板
  93. start, err := time.ParseInLocation(timeLayout, startDate, time.Local)
  94. if err != nil {
  95. return "", err
  96. }
  97. return start.Add(num).Format("2006-01-02"), nil
  98. }
  99. func GetCurrntTime() time.Time {
  100. NowTimeZone := time.FixedZone("CST", 8*3600)
  101. return time.Now().In(NowTimeZone)
  102. }
  103. func GetNowTimeStamp() int64 {
  104. return time.Now().Unix()
  105. }
  106. func GetTimeStamp(timeIn string) (int64, error) {
  107. tm2, err := time.Parse("2006-01-02 15:04:05", timeIn)
  108. if err != nil {
  109. return 0, err
  110. }
  111. return tm2.Unix() - 8*3600, nil
  112. }
  113. func StructToJsonStr(e interface{}) (string, error) {
  114. if b, err := json.Marshal(e); err == nil {
  115. return string(b), err
  116. } else {
  117. return "", err
  118. }
  119. }
  120. func GetBodyString(c *gin.Context) (string, error) {
  121. body, err := ioutil.ReadAll(c.Request.Body)
  122. if err != nil {
  123. fmt.Printf("read body err, %v\n", err)
  124. return string(body), nil
  125. } else {
  126. return "", err
  127. }
  128. }
  129. func JsonStrToMap(e string) (map[string]interface{}, error) {
  130. var dict map[string]interface{}
  131. if err := json.Unmarshal([]byte(e), &dict); err == nil {
  132. return dict, err
  133. } else {
  134. return nil, err
  135. }
  136. }
  137. func StructToMap(data interface{}) (map[string]interface{}, error) {
  138. dataBytes, err := json.Marshal(data)
  139. if err != nil {
  140. return nil, err
  141. }
  142. mapData := make(map[string]interface{})
  143. err = json.Unmarshal(dataBytes, &mapData)
  144. if err != nil {
  145. return nil, err
  146. }
  147. return mapData, nil
  148. }