zhengkun пре 8 месеци
родитељ
комит
147e55c745
2 измењених фајлова са 66 додато и 25 уклоњено
  1. 61 18
      clean/c_time.go
  2. 5 7
      main.go

+ 61 - 18
clean/c_time.go

@@ -1,12 +1,10 @@
 package clean
 
 import (
-	"data_ai/ul"
 	"github.com/shopspring/decimal"
 	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 	"regexp"
 	"strings"
-	"time"
 )
 
 var numReg = regexp.MustCompile("[0-9.]+")
@@ -18,37 +16,82 @@ var YMD_Reg2 = regexp.MustCompile("(\\d{4}[-]\\d{1,2}[-]\\d{1,2})")
 var HMS_Reg1 = regexp.MustCompile("(\\d{1,2}时\\d{1,2}分\\d{1,2}秒)")
 var HMS_Reg2 = regexp.MustCompile("(\\d{1,2}[:]\\d{1,2}[:]\\d{1,2})")
 
+func fillPrefix(s string) string {
+	if len(s) == 2 {
+		return s
+	} else if len(s) == 1 {
+		return "0" + s
+	} else {
+		return "00"
+	}
+}
+
+// 获取年月日
 func convertYMD(ymd string) string {
 	if ymd1 := YMD_Reg1.FindString(ymd); ymd1 != "" {
-
+		ymd1 = strings.ReplaceAll(ymd1, "年", "-")
+		ymd1 = strings.ReplaceAll(ymd1, "月", "-")
+		ymd1 = strings.ReplaceAll(ymd1, "日", "")
+		if arr := strings.Split(ymd1, "-"); len(arr) == 3 {
+			y, m, d := arr[0], arr[1], arr[2]
+			return y + "-" + fillPrefix(m) + "-" + fillPrefix(d)
+		} else {
+			return ""
+		}
+	}
+	if ymd2 := YMD_Reg2.FindString(ymd); ymd2 != "" {
+		if arr := strings.Split(ymd2, "-"); len(arr) == 3 {
+			y, m, d := arr[0], arr[1], arr[2]
+			return y + "-" + fillPrefix(m) + "-" + fillPrefix(d)
+		} else {
+			return ""
+		}
 	}
 	return ""
 }
-func convertHMS(hms string) string {
-	if hms1 := YMD_Reg1.FindString(hms); hms1 != "" {
 
+// 获取时分秒
+func convertHMS(hms string) string {
+	if hms1 := HMS_Reg1.FindString(hms); hms1 != "" {
+		hms1 = strings.ReplaceAll(hms1, "时", ":")
+		hms1 = strings.ReplaceAll(hms1, "分", ":")
+		hms1 = strings.ReplaceAll(hms1, "秒", "")
+		if arr := strings.Split(hms1, ":"); len(arr) == 3 {
+			h, m, s := arr[0], arr[1], arr[2]
+			return fillPrefix(h) + ":" + fillPrefix(m) + ":" + fillPrefix(s)
+		} else {
+			return "00:00:00"
+		}
 	}
-	return ""
+	if hms2 := HMS_Reg2.FindString(hms); hms2 != "" {
+		arr := strings.Split(hms2, ":")
+		h, m, s := "", "", ""
+		if len(arr) == 3 {
+			h, m, s = arr[0], arr[1], arr[2]
+		} else if len(arr) == 2 {
+			h, m, s = arr[0], arr[1], "00"
+		} else {
+			return "00:00:00"
+		}
+		return fillPrefix(h) + ":" + fillPrefix(m) + ":" + fillPrefix(s)
+	}
+	return "00:00:00"
 }
 
 // 清洗时间
-func CleanTime(st string) int64 {
+func CleanTime(st string) string {
 	if st == "" || st == "无" {
-		return 0
+		return ""
 	}
-	//YYYY-MM-DD HH:MM:SS
-	/*
-		2024-02-28 09:00:00
-		2024年3月4日 08:00:00
-		2024年03月01日08时00分00秒
-		2024年3月8日 17:00:00
-		2024年03月08日09时30分00秒
-	*/
 	st = strings.ReplaceAll(st, ":", ":")
 	ymd, hms := convertYMD(st), convertHMS(st)
+	if ymd == "" {
+		return ""
+	}
 	st = ymd + " " + hms
-	t, _ := time.ParseInLocation(ul.TimeLayout, st, time.Local)
-	return t.Unix()
+	return st
+	//t, _ := time.ParseInLocation(ul.TimeLayout, st, time.Local)
+	//return t.Unix()
 }
 
 // 清洗折扣率

+ 5 - 7
main.go

@@ -75,6 +75,10 @@ func test() {
 
 func test1() {
 	arr := []string{
+		"2024年3月4日 08:00:00",
+		"2024年03月01日08时00分00秒",
+		"2024年3月8日 17:00:00",
+		"2024年03月08日09时30分00秒",
 		"2024-01-24 09:15:00",
 		"2024-02-29 00:00:00",
 		"2024-02-23 00:00:00",
@@ -182,14 +186,8 @@ func test1() {
 		"2024-03-06 00:00:00",
 		"2024-03-07 23:59:00",
 	}
-	arr = []string{
-		"2024年3月4日 08:00:00",
-		"2024年03月01日08时00分00秒",
-		"2024年3月8日 17:00:00",
-		"2024年03月08日09时30分00秒",
-	}
 	for _, v := range arr {
-		nv := clean.ClezanTime(v)
+		nv := clean.CleanTime(v)
 		log.Debug(v, "~~~", nv)
 	}