Golang中如何在if语句中使用当前时间
Golang中如何在if语句中使用当前时间 大家好,我正在尝试根据当前时间设置问候语,但我遇到了下午3点和凌晨3点的问题。由于小时是整数,我该如何声明它?
代码:
hour, _, _ := time.Now().Clock()
if hour >= 18 && hour < 3 {
greetings(Dawn)
}
4 回复
可以这样写:
if (hour < 12 && hour <= 3) || (hour > 12 && hour <= 18) {
greetings("Dawn")
}
第一个条件检查上午时间,第二个条件检查下午时间。
更多关于Golang中如何在if语句中使用当前时间的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
感谢您的回答。我该如何将这种思路应用到以下代码中:
if hour >= 18 && hour < 6 {
fmt.Println("\nGood evening.")
}
这个条件语句永远不会成立,因为 18 大于 6。我想表达的是,我指的是第二天的早上 6 点。
在Go中,您遇到的问题是由于逻辑条件错误导致的。hour >= 18 && hour < 3 这个条件永远不会为真,因为一个数字不可能同时大于等于18且小于3。
以下是正确的实现方式:
package main
import (
"fmt"
"time"
)
func main() {
hour, _, _ := time.Now().Clock()
// 方法1:使用多个if-else语句
if hour >= 3 && hour < 12 {
fmt.Println("Good morning!")
} else if hour >= 12 && hour < 18 {
fmt.Println("Good afternoon!")
} else if hour >= 18 && hour < 21 {
fmt.Println("Good evening!")
} else {
fmt.Println("Good night!") // 21:00-02:59
}
// 方法2:处理跨午夜的时间段
hour, _, _ = time.Now().Clock()
if hour >= 3 && hour < 12 {
fmt.Println("Morning greeting")
} else if hour >= 12 && hour < 18 {
fmt.Println("Afternoon greeting")
} else if hour >= 18 {
fmt.Println("Evening greeting")
} else {
fmt.Println("Dawn greeting") // 0:00-2:59
}
}
如果您想特别处理凌晨时段(0:00-2:59),可以这样写:
hour, _, _ := time.Now().Clock()
if hour >= 0 && hour < 3 {
fmt.Println("Dawn greeting")
} else if hour >= 3 && hour < 12 {
fmt.Println("Morning greeting")
} else if hour >= 12 && hour < 18 {
fmt.Println("Afternoon greeting")
} else {
fmt.Println("Evening greeting") // 18:00-23:59
}
或者使用switch语句:
hour, _, _ := time.Now().Clock()
switch {
case hour >= 0 && hour < 3:
fmt.Println("Dawn")
case hour >= 3 && hour < 12:
fmt.Println("Morning")
case hour >= 12 && hour < 18:
fmt.Println("Afternoon")
default:
fmt.Println("Evening")
}


