Go语言:time()函数的用法(案例三天打鱼二天晒网)

在Go语言中,time.Time 的类型中,集合许多非常有用的函数,如time.Date(),time.Since(),time.Sub()等。这都大大方便了对于时间的统计。

案例:编写一个函数,判断输入的某一天是打鱼还是晒网.

思路:1、利用time.Date等函数,计算输入的那一天到指定日期的天数

           2、三天打鱼二天晒网,总计是五天,如果按第1、2、3天是打鱼的,那么第4、5天为晒

                网。用总计天数%5的余数,进行判断这一天是打鱼还是晒网。                 

package main

import (
	"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 int
	var count, i, j int
	a:
	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 % 5
	switch daysRes {
	case 1,2,3 :
		fmt.Println("今天打鱼")
	case 4,5:
		fmt.Println("今天晒网")
	default:
		fmt.Println("今天休息")
	}
 }

输出的结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值