From fc2c1a1348391a16b07bfc237c4b6046515b41c7 Mon Sep 17 00:00:00 2001 From: starainrt Date: Fri, 19 May 2023 10:55:31 +0800 Subject: [PATCH] bug fix --- when/parse.go | 5 ++++- when/parse_test.go | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/when/parse.go b/when/parse.go index a2ae78d..418accb 100644 --- a/when/parse.go +++ b/when/parse.go @@ -13,7 +13,7 @@ func matchPeriodPattern01(base time.Time, str string) (startimer.StarTimer, erro str = transChn(str) var rpt startimer.Repeats var duration time.Duration - reg := regexp.MustCompile(`(每隔|每)?(\d{0,4}年)?(\d{0,5}个?月)?(\d{0,4}[明后大]{0,4}[日号天])?([上中下午夜早凌清晨傍晚里]+)?(\d{1,4}个?[点小时钟:]+)?(\d{0,4}[半分:秒]?钟?)?(\d{0,10}秒?钟?)?(后)?`) + reg := regexp.MustCompile(`(每隔|每)?(\d{0,4}年)?(\d{0,5}个?月)?(\d{0,4}[明后大]{0,4}[日号天])?([上中下午夜早凌清晨傍晚里]+)?(\d{1,4}个?[点小时钟:]+)?(\d{0,4}半?[分:秒]?钟?)?(\d{0,10}半?秒?钟?)?(后)?`) if reg.MatchString(str) { pts := reg.FindStringSubmatch(str) setAsDate := false @@ -136,6 +136,9 @@ func matchPeriodPattern01(base time.Time, str string) (startimer.StarTimer, erro } if pts[8] != "" { + if pts[8] == "半" { + pts[8] = "30" + } if rpt.Every == setAsDate { rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: uint32(getNumbers(pts[8]))}) } else if rpt.Every && !setAsDate { diff --git a/when/parse_test.go b/when/parse_test.go index 95385c1..57478b5 100644 --- a/when/parse_test.go +++ b/when/parse_test.go @@ -10,7 +10,7 @@ func TestParse(t *testing.T) { for k, code := range []string{"一个小时后告诉我事情", "三个小时后爱我", "每两个小时提醒我吃饭", "每五个月零二十五天三小时25分15秒告诉我时间", "5月23日上午3点24分12秒打我", "周五上午11点提醒我", "5时25分提醒我", "每周一到周五上午8点提醒我吃饭", "每天晚上8点提醒我吃饭", "每月16号晚上8点提醒我吃饭", "晚上8:30提醒我", - "晚上八点半提醒我", "6分钟后提醒我", "凌晨0点半", "每20秒提醒我"} { + "晚上八点半提醒我", "6分钟后提醒我", "凌晨0点半", "每20秒提醒我", "半小时后提醒我", "半分钟后提醒我", "一分半后提醒我"} { a, _ := WhenWithPeriod(code) //fmt.Println(a.Repeats()[0]) fmt.Println(a.NextTimer(), a.RunCountLimit(), code, k)