go的基础包 flag log time

  • 命令行参数-flag

    package main
    
    import (
    	"flag"
    	"fmt"
    	"os"
    )
    
    
    func main() {
    	var (
    		host string
    		port int
    		h bool
    		help bool
    	)
    	//flag param
    	flag.StringVar(&host, "H", "127.0.0.1", "hostIPAddress")
    	flag.IntVar(&port, "P", 22, "port")
    	flag.BoolVar(&h,"h", false, "帮助信息")
    	flag.BoolVar(&help, "help", false, "帮助信息")
    
    	//usage信息
    	flag.Usage = func() {
    		fmt.Println("usage: testflag [-H 127.0.0.1] [-P 22]")
    		flag.PrintDefaults()
    	}
    
    
    	//解析
    	flag.Parse()
    
    	if h || help {
    		flag.Usage()
    		//return
    		//建议在main中使用
    		os.Exit(0)
    	}
    
    	//NFlag returns the number of command-line flags that have been set.
    	fmt.Println(flag.NFlag())
    	fmt.Printf("%#v\n",flag.Args())  //slice
    
    	fmt.Println(host, port)
    
    
    }
    
  • 日志-log

    package main
    
    import (
    	"log"
    	"os"
    )
    
    
    func main() {
    
    	//flag0s 设置一个格式
    	log.SetFlags(log.Flags() | log.Lshortfile)
    
    	//prefix
    	log.SetPrefix("main:")
    
    	log.Println("我是第一条println日志")
    
    	//log.Fatalln("我是日志")
    	//log.Panicln("我是panic日志")
    	log.Println("我是第2条println日志")
    
    	logger1 := log.New(os.Stdout, "logger1:", log.Flags() | log.Lshortfile)
    	logger2 := log.New(os.Stdout, "logger2:", log.Flags())
    
    	logger1.Println("我是logger1")
    	logger2.Println("我是logger2")
    }
    
    
  • 时间格式化-time

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    
    	//1.时间
    	 now := time.Now()
    	//年
    	 fmt.Println(now.Year())
    	 fmt.Println(now.Month())
    	 fmt.Println(now.Day())
    	 fmt.Println(now.Hour())
    	 fmt.Println(now.Minute())
    	 fmt.Println(now.Second())
    	 //UNix时间戳
    	 fmt.Println(now.Unix())
    	 //纳秒时间戳
    	 fmt.Println(now.UnixNano())
    
    	 // 2006 4位数字的年
    	 // 01 2位数字的月
    	 // 02 2位数字的天
    	 // 03 12进制的小时
    	 // 15 24进制的小时
    	 // 04 2位数字的分钟
    	 // 05 2位数字的秒
    	 fmt.Println(now.Format("2006-01-02 03:04:05"))
    	 fmt.Println(now.Format("2006-01-02 15:04:05"))
    
    	//生成时间
    	year, month, day := 1990, time.February, 12
    	timeFom := time.Date(year, month, day, 0, 0,0, 0, time.UTC)
    	fmt.Println(timeFom.Format("2006-01-02 15:04:05"))
    
    	//UNixtime
    	startTime := time.Unix(0, 0)
    	fmt.Println(startTime.Format("2006-01-02 15:04:05"))
    
    	//字符串
    	cTime, err := time.Parse("2006-01-02 15:04:05", "2022-01-25 13:54:03")
    	fmt.Println(cTime.Format("2006-01-02"), err)
    
    	cTime, err = time.Parse("2006/01/02", "2022/01/24")
    	fmt.Println(cTime.Format("2006/01/02"), err)
    
    	//时间差, now -time
    	durat := time.Since(cTime)
    	fmt.Printf("%#v, %T\n", durat, durat)
    
    	// time - now
    	durat02 := time.Until(cTime)
    	fmt.Printf("%#v, %T\n", durat02, durat02)
    
    	//parse字符串的时间区间
    	durat03, err := time.ParseDuration("1h1m1s")
    	fmt.Println(durat, err)
    	//将相差时间区间转换成hours, min, seconds
    	fmt.Println(durat.Hours(), durat03.Minutes(), durat03.Seconds())
    
    	//当前时间距离过去xx时间多少小时
    	dayInterval, err := time.ParseDuration("24h")
    	//2022-01-25 14:27:00.2045069 +0800 CST m=+0.007000101 2022-01-26 14:27:00.2045069 +0800 CST m=+86400.007000101
    	fmt.Println(now, now.Add(dayInterval))
    
    	//判断一个时间在之前还是之后
    	yesterday := now.Add(dayInterval) //过去的时间
    	fmt.Println(yesterday.Before(now))
    	fmt.Println(yesterday.After(now))
    
    	fmt.Println(yesterday.Sub(now)) //时间差
    
    	fmt.Println(time.Now())
    	time.Sleep(time.Second * 3) //延迟3s
    
    	fmt.Println(time.Now())
    }
    
    
posted @ 2022-01-25 14:37  wangsk  阅读(39)  评论(0)    收藏  举报