18-Go语言时间和日期

时间和日期函数

当前时间获取
  • 函数:time.Now()
//1.获取当前时间
now := time.Now()
fmt.Println(now) //2018-10-01 11:05:13.437611 +0800 CST m=+0.000000001

日期函数
//2.获取当前时间的年月日时分秒
fmt.Println("年",now.Year())
fmt.Println("月",now.Month())
fmt.Println("日",now.Day())
fmt.Println("时",now.Hour())
fmt.Println("分",now.Minute())
fmt.Println("秒",now.Second())
fmt.Println("周期",now.Weekday())

日期字符串格式化
  • 第一种格式化方法
//3.按照指定的格式生成字符串
    t := time.Now()
    //第一种指定格式
    //fmt.Printf("%d-%d-%d %d:%d:%d\n", t.Year(),t.Month(),t.Day(),t.Hour(),t.Minute(),t.Second())

    //第二种方法
    //func Sprintf(format string, a ...interface{}) string
    str := fmt.Sprintf("%d-%d-%d %d:%d:%d\n", t.Year(),t.Month(),t.Day(),t.Hour(),t.Minute(),t.Second())
    fmt.Println(str)
  • 第二种格式化方式
    • 按照2006/01/02 15:04:05 这个字符串是Go语言规定的, 各个数字都是固定的
//使用format函数格式化时间
    //2006/01/02 15:04:05 这个字符串是Go语言规定的, 各个数字都是固定的
    //字符串中的各个数字可以只有组合, 这样就能按照需求返回格式化好的时间
    t := time.Now()
    str := t.Format("2006-01-02 15:04:05")
    str1 := t.Format("2006")
    str2 := t.Format("15:04")
    fmt.Println(str)
    fmt.Println(str1)
    fmt.Println(str2)

时间常量

const (
Nanosecond Duration = 1 // 纳秒
Microsecond = 1000 * Nanosecond // 微秒
Millisecond = 1000 * Microsecond // 毫秒
Second = 1000 * Millisecond // 秒
Minute = 60 * Second // 分钟
Hour = 60 * Minute // 小时
)

// 时间常量常见的就是配合休眠函数一起使用

    for{
        //注意点: 不能使用时间常量 * 浮点类型来表示,因为不同的数据类型参与运算
        //time.Sleep(time.Second) //每隔1秒打印一次
        time.Sleep(time.Microsecond * 100) //每隔100毫秒打印一次
        fmt.Println("我打印了")
    }

时间戳
  • 从1970年1月1日到现在时间间隔
  • Unix: 返回当前时间距离1970年1月1日有多少秒
  • UnixNano: 返回当前时间距离1970年1月1日有多少纳秒
//获取时间戳
    // go语言中的时间戳是从1970年1月1日开始计算的
    //Unix: 返回当前时间距离1970年1月1日有多少秒
    //UnixNano: 返回当前时间距离1970年1月1日有多少纳秒

    //获取当前的时间戳
    fmt.Println(time.Now().Unix()) //以秒的方式表示
    fmt.Println(time.Now().UnixNano()) //以纳秒的方式表示

    //应用场景
    //生成随机数
    //在rand包中的函数

    for{
        time.Sleep(time.Second)
        //1.设置随机因子(一定要保证每次运行随机因子都不一样才能真正的生成随机数)
        rand.Seed(time.Now().UnixNano())
        //2.生成随机数
        num := rand.Intn(7) //0-6之间的随机数
        fmt.Println(num)
    }

你可能感兴趣的:(18-Go语言时间和日期)