时间和日期函数
当前时间获取
- 函数:
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语言规定的, 各个数字都是
固定的
- 按照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)
}
网友评论