Golang中如何将年度例行任务改为按日期执行

Golang中如何将年度例行任务改为按日期执行 这段代码目前检查任务的“年份”是否在当前“年份”的未来。有人能帮我修改一下,让它检查任务的“日期”是否在当前“日期”的未来吗?我猜需要修改‘year’部分,但不确定具体改为什么(应该不像直接改成‘data’那么简单吧,哈哈!)

var currentDateTime = time.Now()

taskExpirationDate, _ := time.Parse("2009-01-02", tokens[4])

if taskExpirationDate.Year() > currentDateTime.Year() {
	return TaskResponseRegistered
}

return TaskResponsePending

更多关于Golang中如何将年度例行任务改为按日期执行的实战教程也可以访问 https://www.itying.com/category-94-b0.html

8 回复

非常感谢,这招奏效了 😊

更多关于Golang中如何将年度例行任务改为按日期执行的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


每天我都能从这个小组学到更多东西!!! 我之前不知道有这个函数。 谢谢!!!

谢谢,不过遗憾的是,我不知道如何在不做太多改动的情况下将那个方法集成到我现有的代码中。如有任何指点,将不胜感激。

您可以将其修改为类似以下形式:

var currentDateTime = time.Now()

taskExpirationDate, _ := time.Parse("2006-01-02", tokens[4])

if taskExpirationDate.After(currentDateTime) {
	return TaskResponseRegistered
}
return TaskResponsePending

ianmd 说: 以便检查任务的“日期”是否在当前“日期”之后。

time.Time 有一个方法 After

After 报告时间点 t 是否在 u 之后。

可能是类似这样的

func IsInFuture(taskExpirationDate Time) bool {
   result := false
   currentDateTime := time.Now()

    if (taskExpirationDate.Year() > currentDateTime.Year()) {
    result = true
  } 

 if (taskExpirationDate.Year() == currentDateTime.Year() && 
     taskExpirationDate.Month() > currentDateTime.Month()) {
    result = true
 }   

 if (taskExpirationDate.Year() == currentDateTime.Year() && 
     taskExpirationDate.Month() == currentDateTime.Month() && 
      taskExpirationDate.Day() > currentDateTime.DayMonth()) {
   result = true
 }

 return result;
}

要改为按日期比较而不是按年份比较,可以直接使用 After 方法或比较时间戳。以下是修改后的代码:

var currentDateTime = time.Now()

taskExpirationDate, _ := time.Parse("2006-01-02", tokens[4])

if taskExpirationDate.After(currentDateTime) {
    return TaskResponseRegistered
}

return TaskResponsePending

或者使用时间戳比较:

var currentDateTime = time.Now()

taskExpirationDate, _ := time.Parse("2006-01-02", tokens[4])

if taskExpirationDate.Unix() > currentDateTime.Unix() {
    return TaskResponseRegistered
}

return TaskResponsePending

注意:原代码中的时间格式字符串有误,已从 "2009-01-02" 修正为 "2006-01-02",这是 Go 语言中表示年-月-日格式的正确写法。

回到顶部