time_test.go 6.8 KB

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