time.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package utils
  2. import "time"
  3. // 获取今天的日期(零点零分零秒)
  4. func Today() time.Time {
  5. return time.Now().Round(0).UTC().Local()
  6. }
  7. // 获取明天的日期(零点零分零秒)
  8. func Tomorrow() time.Time {
  9. return Today().AddDate(0, 0, 1)
  10. }
  11. // 获取最近7天的日期范围
  12. func Last7Days() (time.Time, time.Time) {
  13. today := Today()
  14. return today.AddDate(0, 0, -6), today
  15. }
  16. // 获取上周的日期范围
  17. func LastWeek() (time.Time, time.Time) {
  18. start := Today().AddDate(0, 0, -7)
  19. end := start.AddDate(0, 0, 6)
  20. return start, end
  21. }
  22. // 获取本周的日期范围
  23. func ThisWeek() (time.Time, time.Time) {
  24. start := time.Now().Round(0).Local().AddDate(0, 0, 0-int(time.Now().Weekday())+1) // 0是本周的第一天,+1是因为AddDate是相对于当前时间的
  25. end := start.AddDate(0, 0, 6)
  26. return start, end
  27. }
  28. // 获取下周的日期范围
  29. func NextWeek() (time.Time, time.Time) {
  30. _, thisEnd := ThisWeek()
  31. start := thisEnd.AddDate(0, 0, 1)
  32. end := start.AddDate(0, 0, 6)
  33. return start, end
  34. }
  35. // 获取上月的日期范围
  36. func LastMonth() (time.Time, time.Time) {
  37. today := time.Now()
  38. year, month, _ := today.Date()
  39. start := time.Date(year, month-1, 1, 0, 0, 0, 0, today.Location())
  40. end := time.Date(year, month, 0, 23, 59, 59, 999999999, today.Location())
  41. return start, end
  42. }
  43. // 获取本月的日期范围
  44. func ThisMonth() (time.Time, time.Time) {
  45. today := time.Now()
  46. year, month, _ := today.Date()
  47. start := time.Date(year, month, 1, 0, 0, 0, 0, today.Location())
  48. end := time.Date(year, month+1, 0, 23, 59, 59, 999999999, today.Location())
  49. return start, end
  50. }
  51. // 获取下月的日期范围
  52. func NextMonth() (time.Time, time.Time) {
  53. start, end := ThisMonth()
  54. return end.AddDate(0, 0, 1), start.AddDate(0, 1, 0)
  55. }