在Go语言中,time.Time 的类型中,集合许多非常有用的函数,如time.Date(),time.Since(),time.Sub()等。这都大大方便了对于时间的统计。
案例:编写一个函数,判断输入的某一天是打鱼还是晒网.
思路:1、利用time.Date等函数,计算输入的那一天到指定日期的天数
2、三天打鱼二天晒网,总计是五天,如果按第1、2、3天是打鱼的,那么第4、5天为晒
网。用总计天数%5的余数,进行判断这一天是打鱼还是晒网。
package mainimport ("fmt""time"_ "strconv"
)func getDays(y, m, d int) int { inputTime := time.Date(y, time.Month(m), d, 0, 0, 0, 0, time.Local)initTime := time.Date(1990, 1, 1, 0, 0, 0, 0, time.Local)//统计输入的日期与当前的日期之间的天数//daysSum := int(time.Since(inputTime).Hours()/24)//将天数转成小时,再除以24得出的结果就是天数,totalDays := int(inputTime.Sub(initTime).Hours()/24)return totalDays + 1 //需要加上1天
}func inputDate() (y,m,d int) {var year, month, day intvar count, i, j inta:for {fmt.Print("请输入年份:")fmt.Scanln(&year)if year >= 1990 {break a} else {count ++fmt.Printf("年份输入有误,您还有%v次机会 ...n",5 - count)}if count == 5 {fmt.Println("您输入错误已满5次,3秒后将关闭程序...")time.Sleep(3 * time.Second)break a }}b:for {fmt.Print("请输入月份:")fmt.Scanln(&month)if month <= 12 && month >= 1 {break b} else {i ++fmt.Printf("月份输入有误,您还有%v次机会 ...n",5 - i)}if i == 5 {fmt.Println("您输入错误已满5次,3秒后将关闭程序...")time.Sleep(3 * time.Second)break b}}c:for {fmt.Print("请输入日期:")fmt.Scanln(&day)if day <= 31 && day >= 1 {break c}else {j ++fmt.Printf("日期输入有误,您还有%v次机会 ...n",5 - j)}if j == 5 {fmt.Println("您输入错误已满5次,3秒后将关闭程序...")time.Sleep(3 * time.Second)break c}}return year, month, day
}func main() {daysSum := getDays(inputDate())fmt.Printf("您输入的日期与1990年1月1日相隔%v天... n",daysSum)daysRes := daysSum % 5switch daysRes {case 1,2,3 :fmt.Println("今天打鱼")case 4,5:fmt.Println("今天晒网")default:fmt.Println("今天休息")}}
输出的结果:
本文发布于:2024-02-03 01:15:06,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170689412947684.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |