datetime.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package gofakeit
  2. import (
  3. "strconv"
  4. "time"
  5. )
  6. // Date will generate a random time.Time struct
  7. func Date() time.Time {
  8. return time.Date(Year(), time.Month(Number(0, 12)), Day(), Hour(), Minute(), Second(), NanoSecond(), time.UTC)
  9. }
  10. // DateRange will generate a random time.Time struct between a start and end date
  11. func DateRange(start, end time.Time) time.Time {
  12. return time.Unix(0, int64(Number(int(start.UnixNano()), int(end.UnixNano())))).UTC()
  13. }
  14. // Month will generate a random month string
  15. func Month() string {
  16. return time.Month(Number(1, 12)).String()
  17. }
  18. // Day will generate a random day between 1 - 31
  19. func Day() int {
  20. return Number(1, 31)
  21. }
  22. // WeekDay will generate a random weekday string (Monday-Sunday)
  23. func WeekDay() string {
  24. return time.Weekday(Number(0, 6)).String()
  25. }
  26. // Year will generate a random year between 1900 - current year
  27. func Year() int {
  28. return Number(1900, time.Now().Year())
  29. }
  30. // Hour will generate a random hour - in military time
  31. func Hour() int {
  32. return Number(0, 23)
  33. }
  34. // Minute will generate a random minute
  35. func Minute() int {
  36. return Number(0, 59)
  37. }
  38. // Second will generate a random second
  39. func Second() int {
  40. return Number(0, 59)
  41. }
  42. // NanoSecond will generate a random nano second
  43. func NanoSecond() int {
  44. return Number(0, 999999999)
  45. }
  46. // TimeZone will select a random timezone string
  47. func TimeZone() string {
  48. return getRandValue([]string{"timezone", "text"})
  49. }
  50. // TimeZoneFull will select a random full timezone string
  51. func TimeZoneFull() string {
  52. return getRandValue([]string{"timezone", "full"})
  53. }
  54. // TimeZoneAbv will select a random timezone abbreviation string
  55. func TimeZoneAbv() string {
  56. return getRandValue([]string{"timezone", "abr"})
  57. }
  58. // TimeZoneOffset will select a random timezone offset
  59. func TimeZoneOffset() float32 {
  60. value, _ := strconv.ParseFloat(getRandValue([]string{"timezone", "offset"}), 32)
  61. return float32(value)
  62. }