libString.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package lib
  2. import (
  3. "errors"
  4. "math/rand"
  5. "regexp"
  6. "strings"
  7. "time"
  8. )
  9. // #取得随机字符串:通过打乱slice来操作
  10. func GetRandstring(length int, char string, rand_x int64) string {
  11. if length < 1 {
  12. return ""
  13. }
  14. if len(char) <= 6 || len(char) <= length {
  15. char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
  16. }
  17. charArr := strings.Split(char, "")
  18. ran := rand.New(rand.NewSource(time.Now().UnixMilli() + rand_x))
  19. l := len(charArr)
  20. for i := l - 1; i > 0; i-- {
  21. r := ran.Intn(i)
  22. charArr[r], charArr[i] = charArr[i], charArr[r]
  23. }
  24. rchar := charArr[:length]
  25. return strings.Join(rchar, "")
  26. }
  27. // 检查日期格式
  28. func IsDateStr(date string) bool {
  29. if _, err := time.Parse("2006-01-02", date); err != nil {
  30. return false
  31. }
  32. return true
  33. }
  34. // 转化
  35. func TimeStrToTime(T_time string) (time.Time, bool) {
  36. if len(T_time) == 19 {
  37. stamp, err := time.ParseInLocation("2006-01-02 15:04:05", T_time, time.Local) // +8
  38. if err != nil {
  39. return time.Time{}, false
  40. }
  41. return stamp, true
  42. }
  43. stamp, err := time.ParseInLocation("2006-01-02 15:04", T_time, time.Local) // +8
  44. if err != nil {
  45. return time.Time{}, false
  46. }
  47. return stamp, true
  48. }
  49. func ParseTime(T_time string) time.Time {
  50. stamp, err := time.ParseInLocation("2006-01-02 15:04:05", T_time, time.Local) // +8
  51. if err != nil {
  52. return time.Time{}
  53. }
  54. return stamp
  55. }
  56. func ReplaceSeconds(timeStr string) (string, error) {
  57. length := len(timeStr)
  58. if length < 2 {
  59. return "", errors.New("时间格式不正确")
  60. }
  61. lastTwoDigits := timeStr[length-2:]
  62. if lastTwoDigits == "00" {
  63. return timeStr, nil
  64. }
  65. t, err := time.Parse("2006-01-02 15:04:05", timeStr)
  66. if err != nil {
  67. return "", err
  68. }
  69. roundedTime := t.Truncate(time.Minute) // 将时间截断到分钟级别
  70. roundedTimeString := roundedTime.Format("2006-01-02 15:04:00")
  71. return roundedTimeString, nil
  72. }
  73. // 判断字符串是否为纯数字
  74. func IsNumeric(str string) bool {
  75. // 定义一个正则表达式来匹配纯数字字符串
  76. re := regexp.MustCompile(`^\d+$`)
  77. return re.MatchString(str)
  78. }
  79. func SubtractStringLists(list1, list2 []string) []string {
  80. // Create a map to store elements of list2 for fast lookup
  81. excludeMap := make(map[string]bool)
  82. for _, item := range list2 {
  83. excludeMap[item] = true
  84. }
  85. // Initialize the result slice with elements not present in list2
  86. var result []string
  87. for _, item := range list1 {
  88. if !excludeMap[item] {
  89. result = append(result, item)
  90. }
  91. }
  92. return result
  93. }