timestamp.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package sqlite
  2. import (
  3. "time"
  4. "github.com/spf13/cast"
  5. )
  6. // 输入数字为毫秒值或文本或time.Time
  7. func MSTimeStampValue(v interface{}) time.Time {
  8. var ms int64
  9. switch tv := v.(type) {
  10. case time.Time:
  11. return tv
  12. case float32:
  13. ms = int64(tv)
  14. case float64:
  15. ms = int64(tv)
  16. case int:
  17. ms = int64(tv)
  18. case int8:
  19. ms = int64(tv)
  20. case int16:
  21. ms = int64(tv)
  22. case int32:
  23. ms = int64(tv)
  24. case int64:
  25. ms = tv
  26. case uint:
  27. ms = int64(tv)
  28. case uint8:
  29. ms = int64(tv)
  30. case uint16:
  31. ms = int64(tv)
  32. case uint32:
  33. ms = int64(tv)
  34. case uint64:
  35. ms = int64(tv)
  36. default:
  37. return cast.ToTimeInDefaultLocation(v, time.Local)
  38. }
  39. return time.Unix(0, ms*1000000)
  40. }
  41. // 输入数字为纳秒值或文本或time.Time
  42. func NSTimeStampValue(v interface{}) time.Time {
  43. var ns int64
  44. switch tv := v.(type) {
  45. case time.Time:
  46. return tv
  47. case float32:
  48. ns = int64(tv)
  49. case float64:
  50. ns = int64(tv)
  51. case int:
  52. ns = int64(tv)
  53. case int8:
  54. ns = int64(tv)
  55. case int16:
  56. ns = int64(tv)
  57. case int32:
  58. ns = int64(tv)
  59. case int64:
  60. ns = tv
  61. case uint:
  62. ns = int64(tv)
  63. case uint8:
  64. ns = int64(tv)
  65. case uint16:
  66. ns = int64(tv)
  67. case uint32:
  68. ns = int64(tv)
  69. case uint64:
  70. ns = int64(tv)
  71. default:
  72. return cast.ToTimeInDefaultLocation(v, time.Local)
  73. }
  74. return time.Unix(0, ns)
  75. }