strings.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package util
  2. import (
  3. "fmt"
  4. "math"
  5. "regexp"
  6. "time"
  7. )
  8. func StringsFallback2(val1 string, val2 string) string {
  9. return stringsFallback(val1, val2)
  10. }
  11. func StringsFallback3(val1 string, val2 string, val3 string) string {
  12. return stringsFallback(val1, val2, val3)
  13. }
  14. func stringsFallback(vals ...string) string {
  15. for _, v := range vals {
  16. if v != "" {
  17. return v
  18. }
  19. }
  20. return ""
  21. }
  22. func SplitString(str string) []string {
  23. if len(str) == 0 {
  24. return []string{}
  25. }
  26. return regexp.MustCompile("[, ]+").Split(str, -1)
  27. }
  28. func GetAgeString(t time.Time) string {
  29. if t.IsZero() {
  30. return "?"
  31. }
  32. sinceNow := time.Since(t)
  33. minutes := sinceNow.Minutes()
  34. years := int(math.Floor(minutes / 525600))
  35. months := int(math.Floor(minutes / 43800))
  36. days := int(math.Floor(minutes / 1440))
  37. hours := int(math.Floor(minutes / 60))
  38. if years > 0 {
  39. return fmt.Sprintf("%dy", years)
  40. }
  41. if months > 0 {
  42. return fmt.Sprintf("%dM", months)
  43. }
  44. if days > 0 {
  45. return fmt.Sprintf("%dd", days)
  46. }
  47. if hours > 0 {
  48. return fmt.Sprintf("%dh", hours)
  49. }
  50. if int(minutes) > 0 {
  51. return fmt.Sprintf("%dm", int(minutes))
  52. }
  53. return "< 1m"
  54. }