time_utils.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package time_utils
  2. import "time"
  3. func GetFirstDateOfWeek(now time.Time) time.Time {
  4. offset := int(time.Monday - now.Weekday())
  5. if offset > 0 {
  6. offset = -6
  7. }
  8. weekStartDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
  9. return weekStartDate
  10. }
  11. func GetLastWeekFirstDate(now time.Time) time.Time {
  12. thisWeekMonday := GetFirstDateOfWeek(now)
  13. lastWeekMonday := thisWeekMonday.AddDate(0, 0, -7)
  14. return lastWeekMonday
  15. }
  16. func GetLastDateOfWeek(now time.Time) time.Time {
  17. thisWeekMonday := GetFirstDateOfWeek(now)
  18. lastWeekMonday := thisWeekMonday.AddDate(0, 0, 6)
  19. return lastWeekMonday
  20. }
  21. //获取传入的时间所在月份的第一天,即某月第一天的0点。如传入time.Now(), 返回当前月份的第一天0点时间。
  22. func GetFirstDateOfMonth(d time.Time) time.Time {
  23. d = d.AddDate(0, 0, -d.Day()+1)
  24. return d
  25. }
  26. //获取传入的时间所在月份的最后一天,即某月最后一天的0点。如传入time.Now(), 返回当前月份的最后一天0点时间。
  27. func GetLastDateOfMonth(d time.Time) time.Time {
  28. return GetFirstDateOfMonth(d).AddDate(0, 1, -1)
  29. }
  30. func GetZeroTime(d time.Time) time.Time {
  31. return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location())
  32. }
  33. func GetFormatTime(d time.Time) string {
  34. return d.Format("2006-01-02")
  35. }
  36. func GetFormatTimeFull(d time.Time) string {
  37. return d.Format("2006-01-02 15:04:05")
  38. }
  39. func TimeNowInCN() time.Time {
  40. var cstZone = time.FixedZone("CST", 8*3600)
  41. return time.Now().In(cstZone)
  42. }
  43. func GetCNZone() *time.Location {
  44. return time.FixedZone("UTC-8", 8*3600)
  45. }