time.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package tool
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. //返回周日期
  7. func GetWeekDate(date time.Time) [2]string {
  8. w := int(date.Weekday()) //获取周几
  9. //timeFormat := "20060102" //对管理后台友好的格式
  10. timeFormat := "2006-01-02"
  11. dateTemp := date.Format(timeFormat)
  12. var out [2]string
  13. var s,e string
  14. switch w {
  15. case 0:
  16. //周日
  17. h := fmt.Sprintf("-%dh", 24*6) //减去24小时(前一天)
  18. dh, _ := time.ParseDuration(h)
  19. s = date.Add(dh).Format(timeFormat)
  20. e = dateTemp
  21. break
  22. case 1:
  23. //周一
  24. h := fmt.Sprintf("+%dh", 24*6) //减去24小时(前一天)
  25. dh, _ := time.ParseDuration(h)
  26. s = dateTemp
  27. e = date.Add(dh).Format(timeFormat)
  28. break
  29. default:
  30. h := fmt.Sprintf("-%dh", 24*(w-1)) //减去24小时(前一天)
  31. dh, _ := time.ParseDuration(h)
  32. s = date.Add(dh).Format(timeFormat)
  33. h2 := fmt.Sprintf("+%dh", 24*(7-w)) //减去24小时(前一天)
  34. dh2, _ := time.ParseDuration(h2)
  35. e = date.Add(dh2).Format(timeFormat)
  36. }
  37. out[0] = s
  38. out[1] = e
  39. return out
  40. }
  41. //获取传入的时间所在月份的第一天,即某月第一天的0点。如传入time.Now(), 返回当前月份的第一天0点时间。
  42. func GetFirstDateOfMonth(d time.Time) time.Time {
  43. d = d.AddDate(0, 0, -d.Day() + 1)
  44. return GetZeroTime(d)
  45. }
  46. //获取传入的时间所在月份的最后一天,即某月最后一天的0点。如传入time.Now(), 返回当前月份的最后一天0点时间。
  47. func GetLastDateOfMonth(d time.Time) time.Time {
  48. return GetFirstDateOfMonth(d).AddDate(0, 1, -1)
  49. }
  50. //获取某一天的0点时间
  51. func GetZeroTime(d time.Time) time.Time {
  52. return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location())
  53. }
  54. //获取时间范围端的周
  55. func GetTimeWeek(sdate string,num int) map[string][2]string {
  56. var listMap map[string][2]string /*创建集合 */
  57. listMap = make(map[string][2]string)
  58. for i := 1; i <= num; i++ {
  59. h := fmt.Sprintf("-%dh", 24*i) //减去24小时(前一天)
  60. dh, _ := time.ParseDuration(h)
  61. timeTemp := time.Now().Add(dh)
  62. date := GetWeekDate(timeTemp)
  63. listMap[date[0]+"~"+date[1]] = date
  64. }
  65. return listMap
  66. }
  67. //获取月
  68. func GetTimeMonth(num int,symbol string) map[string][2]string{
  69. var listMap map[string][2]string /*创建集合 */
  70. listMap = make(map[string][2]string)
  71. for i := 0; i <= num; i++ {
  72. var month time.Time
  73. if symbol == "+" {
  74. month = time.Now().AddDate(0, i, -time.Now().Day() + 1)
  75. }else{
  76. month = time.Now().AddDate(0, -i, -time.Now().Day() + 1)
  77. }
  78. sdate := GetFirstDateOfMonth(month)
  79. edate := GetLastDateOfMonth(month)
  80. var dateTemp [2]string
  81. dateTemp[0] = sdate.Format("2006-01-02")
  82. dateTemp[1] = edate.Format("2006-01-02")
  83. listMap[dateTemp[0] + "~" + dateTemp[1]] = dateTemp
  84. }
  85. return listMap
  86. }