function.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package utils
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "time"
  6. )
  7. // TimestampToString 将 Unix 时间戳转换为指定格式的时间字符串
  8. // 参数:
  9. // t - Unix 时间戳(秒级)
  10. // format - 时间格式字符串(例如 "2006-01-02 15:04:05")
  11. // 返回值:
  12. // 格式化后的时间字符串
  13. func TimestampToString(t int64, format string) string {
  14. t_obj := time.Unix(t, 0)
  15. return t_obj.Format(format)
  16. }
  17. // StringToTimestamp 将指定格式的时间字符串转换为 Unix 时间戳
  18. // 参数:
  19. // t - 时间字符串
  20. // format - 时间格式字符串(例如 "2006-01-02 15:04:05")
  21. // 返回值:
  22. // Unix 时间戳(秒级)
  23. func StringToTimestamp(t string, format string) int64 {
  24. t_obj, err := time.ParseInLocation(format, t, time.Local)
  25. if err != nil {
  26. return 0
  27. }
  28. return t_obj.Unix()
  29. }
  30. // Contains 检查切片中是否包含指定元素
  31. // 参数:
  32. // slice - 待检查的切片
  33. // item - 要查找的元素
  34. // 返回值:
  35. // 如果切片中包含指定元素,则返回 true;否则返回 false
  36. func Contains[T comparable](slice []T, item T) bool {
  37. for _, v := range slice {
  38. if v == item {
  39. return true
  40. }
  41. }
  42. return false
  43. }
  44. func StringJsonConvert[T comparable](jsonSt T) ([]byte, error) {
  45. // 将结构体转换为 JSON
  46. jsonData, err := json.Marshal(jsonSt)
  47. if err != nil {
  48. return []byte{}, fmt.Errorf("JSON 编码失败: %w", err)
  49. }
  50. // 去除转义字符的方法:先反序列化再序列化
  51. var temp interface{}
  52. if err = json.Unmarshal(jsonData, &temp); err != nil {
  53. return []byte{}, fmt.Errorf("JSON 反序列化失败: %w", err)
  54. }
  55. cleanJson, err := json.Marshal(temp)
  56. if err != nil {
  57. return []byte{}, fmt.Errorf("JSON 重新序列化失败: %w", err)
  58. }
  59. return cleanJson, nil
  60. }