time_test.go 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. package time_test
  2. import (
  3. "fmt"
  4. "math"
  5. "testing"
  6. "time"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestUTC(t *testing.T) {
  10. tm, _ := time.ParseInLocation("2006-01-02 15:04:05.000000000", "1970-01-01 00:00:00.000000000", time.UTC)
  11. fmt.Println(tm.Format("2006-01-02 15:04:05.000000000-07:00"), "=>", tm.UnixNano())
  12. if !assert.Equal(t, tm.UnixNano(), int64(0)) {
  13. return
  14. }
  15. tm, _ = time.ParseInLocation("2006-01-02 15:04:05.000000000", "1970-01-01 08:00:00.000000000", time.Local)
  16. fmt.Println(tm.Format("2006-01-02 15:04:05.000000000-07:00"), "=>", tm.UnixNano())
  17. if !assert.Equal(t, tm.UnixNano(), int64(0)) {
  18. return
  19. }
  20. }
  21. func TestRound(tx *testing.T) {
  22. t, _ := time.Parse("2006-01-02 15:04:05.000000000", "2006-01-02 15:04:05.123456789")
  23. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  24. t = t.Round(1 * time.Second)
  25. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  26. t = t.Round(1 * time.Minute)
  27. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  28. t = t.Round(1 * time.Hour)
  29. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  30. t = t.Round(24 * time.Hour)
  31. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  32. ////
  33. t, _ = time.Parse("2006-01-02 15:04:05.000000000", "2006-01-02 15:30:05.123456789")
  34. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  35. t = t.Round(1 * time.Second)
  36. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  37. t = t.Round(1 * time.Minute)
  38. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  39. t = t.Round(1 * time.Hour)
  40. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  41. t = t.Round(24 * time.Hour)
  42. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  43. ////
  44. t, _ = time.Parse("2006-01-02 15:04:05.000000000", time.Now().Format("2006-01-02 15:04:05.000000000"))
  45. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  46. t = t.Round(1 * time.Second)
  47. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  48. t = t.Round(1 * time.Minute)
  49. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  50. t = t.Round(1 * time.Hour)
  51. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  52. t = t.Round(24 * time.Hour)
  53. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  54. ////
  55. t = time.Now()
  56. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  57. t = t.Round(1 * time.Second)
  58. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  59. t = t.Round(1 * time.Minute)
  60. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  61. t = t.Round(1 * time.Hour)
  62. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  63. t = t.Round(24 * time.Hour)
  64. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  65. }
  66. func TestTruncate(tx *testing.T) {
  67. t, _ := time.Parse("2006-01-02 15:04:05.000000000", "2006-01-02 15:04:05.123456789")
  68. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  69. t = t.Truncate(1 * time.Second)
  70. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  71. t = t.Truncate(1 * time.Minute)
  72. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  73. t = t.Truncate(1 * time.Hour)
  74. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  75. t = t.Truncate(24 * time.Hour)
  76. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  77. ////
  78. t, _ = time.Parse("2006-01-02 15:04:05.000000000", "2006-01-02 15:30:05.123456789")
  79. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  80. t = t.Truncate(1 * time.Second)
  81. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  82. t = t.Truncate(1 * time.Minute)
  83. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  84. t = t.Truncate(1 * time.Hour)
  85. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  86. t = t.Truncate(24 * time.Hour)
  87. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  88. ////
  89. t, _ = time.Parse("2006-01-02 15:04:05.000000000", time.Now().Format("2006-01-02 15:04:05.000000000"))
  90. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  91. t = t.Truncate(1 * time.Second)
  92. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  93. t = t.Truncate(1 * time.Minute)
  94. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  95. t = t.Truncate(1 * time.Hour)
  96. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  97. t = t.Truncate(24 * time.Hour)
  98. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  99. ////
  100. t = time.Now()
  101. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  102. t = t.Truncate(1 * time.Second)
  103. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  104. t = t.Truncate(1 * time.Minute)
  105. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  106. t = t.Truncate(1 * time.Hour)
  107. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  108. t = t.Truncate(24 * time.Hour)
  109. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  110. ////
  111. t = time.Now().Truncate(366 * 24 * time.Hour)
  112. fmt.Println(t.Format("2006-01-02 15:04:05.000000000"))
  113. }
  114. func TestRange(t *testing.T) {
  115. n := int64(math.MinInt64)
  116. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  117. n = int64(math.MaxInt64)
  118. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  119. n = int64(1e16)
  120. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  121. n = int64(1e17)
  122. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  123. n = int64(1e18)
  124. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  125. n = int64(2e18)
  126. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  127. n = int64(3e18)
  128. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  129. n = int64(4e18)
  130. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  131. n = int64(5e18)
  132. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  133. n = int64(6e18)
  134. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  135. n = int64(7e18)
  136. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  137. n = int64(8e18)
  138. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  139. n = int64(9e18)
  140. fmt.Println(time.Unix(0, n).Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(n)))
  141. tm, _ := time.Parse("2006-01-02 15:04:05", "2001-09-09 09:46:40")
  142. fmt.Println(tm.Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%e", float64(tm.UnixNano())))
  143. tm = time.Time{}
  144. fmt.Println(tm.Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%d", tm.Unix()), fmt.Sprintf("%d", tm.UnixNano()))
  145. tm, _ = time.Parse("2006-01-02 15:04:05", "0220-09-09 09:09:09")
  146. fmt.Println(tm.Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%d", tm.Unix()), fmt.Sprintf("%d", tm.UnixNano()))
  147. n = int64(-6795364578871345152)
  148. tm = time.Unix(0, n)
  149. fmt.Println(tm.Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%d", tm.Unix()), fmt.Sprintf("%d", tm.UnixNano()))
  150. }
  151. func TestRange2(t *testing.T) {
  152. tm := time.Unix(-9223372028715350743, -1)
  153. fmt.Println(tm.Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%d", tm.Unix()), fmt.Sprintf("%d", tm.UnixNano()))
  154. tm = time.Unix(math.MinInt64, 0)
  155. fmt.Println(tm.Format("2006-01-02 15:04:05.000000000"), " ", fmt.Sprintf("%d", tm.Unix()), fmt.Sprintf("%d", tm.UnixNano()))
  156. }