|
@@ -1810,3 +1810,92 @@ func GormDateStrToDateStr(originalString string) (formatStr string) {
|
|
|
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func FormatZhDateBak(dateTimeStr string) (newDateTimeStr string, err error) {
|
|
|
+ if dateTimeStr == `` {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if strings.Contains(dateTimeStr, "年") {
|
|
|
+ dateTimeStr = strings.ReplaceAll(dateTimeStr, "年", "-")
|
|
|
+ }
|
|
|
+ if strings.Contains(dateTimeStr, "月份") {
|
|
|
+ dateTimeStr = strings.ReplaceAll(dateTimeStr, "月份", "-")
|
|
|
+ dateTimeStrList := strings.Split(dateTimeStr, "-")
|
|
|
+ if len(dateTimeStrList) == 3 {
|
|
|
+ monthInt, tmpErr := strconv.Atoi(dateTimeStrList[1])
|
|
|
+ if tmpErr != nil {
|
|
|
+ return ``, tmpErr
|
|
|
+ }
|
|
|
+ if monthInt < 10 {
|
|
|
+ dateTimeStrList[1] = fmt.Sprint("0", dateTimeStrList[1])
|
|
|
+ dateTimeStr = strings.Join(dateTimeStrList, `-`)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if strings.Contains(dateTimeStr, "月") {
|
|
|
+ dateTimeStr = strings.ReplaceAll(dateTimeStr, "月", "-")
|
|
|
+ dateTimeStrList := strings.Split(dateTimeStr, "-")
|
|
|
+ if len(dateTimeStrList) == 3 {
|
|
|
+ monthInt, tmpErr := strconv.Atoi(dateTimeStrList[1])
|
|
|
+ if tmpErr != nil {
|
|
|
+ return ``, tmpErr
|
|
|
+ }
|
|
|
+ if monthInt < 10 {
|
|
|
+ dateTimeStrList[1] = fmt.Sprint("0", dateTimeStrList[1])
|
|
|
+ dateTimeStr = strings.Join(dateTimeStrList, `-`)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if strings.Contains(dateTimeStr, "上旬") {
|
|
|
+ dateTimeStr = strings.ReplaceAll(dateTimeStr, "上旬", "10")
|
|
|
+ } else if strings.Contains(dateTimeStr, "中旬") {
|
|
|
+ dateTimeStr = strings.ReplaceAll(dateTimeStr, "中旬", "20")
|
|
|
+ } else if strings.Contains(dateTimeStr, "本月") {
|
|
|
+ dateTimeStr = strings.ReplaceAll(dateTimeStr, "本月", "")
|
|
|
+ dateTime, tmpErr := time.ParseInLocation(FormatYearMonthDate, dateTimeStr, time.Local)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ dateTimeStr = time.Date(dateTime.Year(), dateTime.Month(), 1, 0, 0, 0, 0, time.Local).AddDate(0, 1, -1).Format(FormatDate)
|
|
|
+ }
|
|
|
+
|
|
|
+ return dateTimeStr, nil
|
|
|
+}
|
|
|
+
|
|
|
+func FormatZhDate(dateStr string) (newDateTimeStr string, err error) {
|
|
|
+ // Regular expression to extract year, month, and period
|
|
|
+ re := regexp.MustCompile(`(\d{4})年?(\d{1,2})月(?:份)?(上旬|中旬|本月)`)
|
|
|
+ matches := re.FindStringSubmatch(dateStr)
|
|
|
+
|
|
|
+ if len(matches) != 4 {
|
|
|
+ return "", fmt.Errorf("unsupported date string format: %s", dateStr)
|
|
|
+ }
|
|
|
+
|
|
|
+ year, err := strconv.Atoi(matches[1])
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ month, err := strconv.Atoi(matches[2])
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ period := matches[3]
|
|
|
+
|
|
|
+ var day int
|
|
|
+ switch period {
|
|
|
+ case "上旬":
|
|
|
+ day = 10
|
|
|
+ case "中旬":
|
|
|
+ day = 20
|
|
|
+ case "本月":
|
|
|
+ // Get the last day of the month
|
|
|
+ lastDayOfMonth := time.Date(year, time.Month(month+1), 0, 0, 0, 0, 0, time.UTC).Day()
|
|
|
+ day = lastDayOfMonth
|
|
|
+ default:
|
|
|
+ return "", fmt.Errorf("unsupported period in date string: %s", dateStr)
|
|
|
+ }
|
|
|
+
|
|
|
+ targetDate := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.UTC)
|
|
|
+ return targetDate.Format(FormatDate), nil
|
|
|
+}
|