在Go语言中如何使特定块在超过有效期时失效?

d7v8vwbk  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(122)
mins, _ := time.ParseDuration(fmt.Sprintf("%dmins", v.SalePeriod))
            local, _ := time.LoadLocation("Local")
            t, _ := time.ParseInLocation("2006-01-02 15:04:05", v.CreateTime, local)
            vTime := t.Add(time.Minute * mins)

t.Add(time.Minute * mins)不起作用,更新的时间没有得到更新
我尝试执行此操作:vTime:= t.添加(时间.分钟 * 分钟)

// But the Piece of Block is not getting Expired
if time.Now().Local().After(vTime) {
                //Change status to expired
                var bodyBytes [][]byte   
                bodyBytes = append(bodyBytes, []byte(v.ObjectOfSale))
                bodyBytes = append(bodyBytes, []byte(v.Seller))
                bodyBytes = append(bodyBytes, []byte(v.Buyer))
                bodyBytes = append(bodyBytes, []byte("expired"))
                //call smart contract
                resp, err := bc.ChannelExecute("updateSelling", bodyBytes)
                if err != nil {
                    return
                }
                var data map[string]interface{}
                if err = json.Unmarshal(bytes.NewBuffer(resp.Payload).Bytes(), &data); err != nil {
                    return
                }
                fmt.Println(data)
            }
mm9b1k5b

mm9b1k5b1#

函数time.ParseDuration需要格式为?m的字符串,其中?表示数字。
您需要在格式字串中将%dmins变更为%dm,才能使程式运作。
链接:

正如@Peter所指出的,在time.Minute上还存在冗余乘法

相关问题